春天。使用java配置解决循环依赖关系,无需@Autowired
2022-09-04 02:23:37
我有循环依赖和java配置。虽然使用xml配置解决它非常容易,但如果不@Autowired,我无法使用java配置解决它。豆:
public class A {
private B b;
public B getB() {
return b;
}
public void setB(B b) {
this.b = b;
}
}
public class B {
private A a;
public A getA() {
return a;
}
public void setA(A a) {
this.a = a;
}
}
我试过这个(我已经读过,@Bean注释Spring不会在每次引用bean时调用方法,但在这种情况下,它实际上一直被调用):
@Configuration
public class Config {
@Bean
public A a() {
A a = new A();
a.setB(b());
return a;
}
@Bean
public B b() {
B b = new B();
b.setA(a());
return b;
}
}
还有这个,@Autowired配置类字段:
@Configuration
public class Config {
@Autowired
A a;
@Autowired
B b;
@Bean
public A a() {
A a = new A();
a.setB(b);
return a;
}
@Bean
public B b() {
B b = new B();
b.setA(a);
return b;
}
}
我也尝试了上面所有@Lazy注释。无济于事。但是,如果我用@Autowired注释A和B的setter,那么效果很好。但这不是我现在想要的。我做错了什么,有没有办法在不使用@Autowired的情况下解决java配置中的循环依赖关系?