У меня есть круговая зависимость и java-конфиг. Хотя решение с помощью xml-конфигурации очень просто, я не могу разрешить его с помощью java-конфигурации без @Autowired. Фасоль:
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:
@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. Не помогает. Но работает отлично, если я комментирую сеттеры A и B с @Autowired. Но это не то, что я хочу сейчас. Что я делаю неправильно и есть ли способ разрешить зависимость Circular в java-конфиге без использования @Autowired?