我的应用程序中有以下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 main为什么这种循环依赖性不是很一致?
问题是您的豆A取决于bean b,而bean B取决于beanA。首先,我建议重新考虑您的设计。但是,有一些解决方法,例如使用@postConstruct或@lazy。这是一个很好的参考,其中解释了解决问题的情况和不同的方法:http://www.baeldung.com/circular-depparies-in-spring