Circular dependency in Spring

Viewed 154191

How does Spring resolve this: bean A is dependent on bean B, and bean B on bean A.

14 Answers

Circular dependency in Spring : Dependency of one Bean to other. Bean A → Bean B → Bean A

Solutions:

  1. Use @Lazy Annotation
  2. Redesign you class dependency
  3. Use Setter/Field Injection
  4. Use @PostConstruct Annotation

Also we use @Lazy Annotation

@Component

public class ClassA {

    private ClassB classB;

    public ClassB getClassB() {
        return classB;
    }

    @Lazy
    @Autowired
    public void setClassB(ClassB classB) {
        this.classB = classB;
    }   
}
@Component

public class ClassB {

    private ClassA classA;

    @Autowired
    public ClassB(ClassA classA) {
        super();
        this.classA = classA;
    }

    public ClassA getClassA() {
        return classA;
    }

    public void setClassA(ClassA classA) {
        this.classA = classA;
    }
}
Related