У меня есть круговая зависимость и java-конфиг. Хотя решение с помощью xml-конфигурации очень просто, я не могу разрешить его с помощью java-конфигурации без @Autowired. Фасоль:Весна. Разрешить циклическую зависимость с 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 не будет ссылаться на метод ссылается каждый раз, когда боб, но в данном случае это на самом деле был вызван все время):
@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 аннотацию. Не помогает. Но работает отлично, если я комментирую сеттеры A и B с @Autowired. Но я не хочу этого сейчас. Что я делаю неправильно и есть ли способ разрешить зависимость Circular в java-конфиге без использования @Autowired?
Можете ли вы объяснить, но это не то, что я хочу прямо сейчас. Если это правильный инструмент для работы ... –
@Sotirios Delimanolis мое приложение немного беспорядочно прямо сейчас, и я боюсь запутаться с зависимостями вокруг кода. Это не религиозно, и я люблю Autowired, но сейчас я бы предпочел сосредоточить бобы в одном файле конфигурации и управлять зависимостями руками. Также мне интересно, возможно ли это вообще. –
На весеннем форуме была интересная дискуссия: http: //forum.spring.io/forum/spring-projects/container/127799-round-dependencies-with-autowired-in-java-configuration –