与构造函数+ setter注入不一致的循环依赖

时间:2017-12-14 15:50:20

标签: java spring dependency-injection inversion-of-control

我的应用程序中有以下bean

@Component
public class Main {

    private A a;

    @Inject
    public Main(A a) {
        this.a = a;
    }

    public A getA() {
        return a;
    }

    public void setA(A a) {
        this.a = a;
    }

}

@Component
public class A {
    private B b;

    @Inject
    public void setB(B b) {
        this.b = b;
    }

    public B getB() {
        return b;
    }

}

@Component
public class B {
    private A a;

    @Inject
    public void setA(A a) {
        this.a = a;
    }

    public A getA() {
        return a;
    }

}

组件扫描适用于放置这三个类的包。 上面的bean在某些环境中工作,并且在创建bean Main时在具有循环依赖性的其他环境中失败 为什么这种循环依赖不是很一致?

1 个答案:

答案 0 :(得分:-1)

问题是你的bean A依赖于bean B,而bean B依赖于bean A.首先,我建议你重新考虑你的设计。但是,有一些解决方法,比如使用@Postconstruct或@Lazy。 这是一个很好的参考,它解释了发生了什么以及解决问题的不同方法:http://www.baeldung.com/circular-dependencies-in-spring