Spring сообщают положительную ошибку ложной круговая зависимости, когда порядок зависимости выглядит, как показано нижеСпринг ложноположительной циклическая зависимость сообщила
- FactoryBean зависит от списка (например, AnimalFeeder)
- AnimalFeeder зависит от списка строк.
Интересные вещи
- Проблема не наблюдалось, когда порядок пружинный конкретизации изменения Ie) FactoryBean предшествует AnimalFeeder. Но проблема была замечена, когда AnimalFeeder приходит до FactoryBean.
- Это происходит только при использовании FactoryBean. проблема не наблюдалась, когда вместо FactoryBean использовался простой класс bean.
здесь исходный код
public interface Feeder {
void feed();
}
public class AnimalFeederImpl implements Feeder {
private List<String> feedingTypes;
public AnimalFeederImpl(List<String> feedingTypes) {
this.feedingTypes = feedingTypes;
}
@Override
public void feed() {
//feed here
}
}
public class FeederManager {
private final List<Feeder> feeders;
public FeederManager(List<Feeder> feeders) {
this.feeders = feeders;
}
//This method will trigger the feeding for every 4 hours
public void triggerFeeding() {
}
}
public class FeederFactory implements FactoryBean, InitializingBean {
private List<Feeder> feeders;
private FeederManager feederManager;
public FeederFactory(List<Feeder> feeders) {
this.feeders = feeders;
}
@Override
public void afterPropertiesSet() throws Exception {
feederManager = new FeederManager(feeders);
}
public static void main(String args[]){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext();
context.setAllowBeanDefinitionOverriding(false);
context.setConfigLocation("test-application-context.xml");
context.refresh();
}
}
здесь контекст файла
<bean id="water" class="java.lang.String">
<constructor-arg value="water"/>
</bean>
<bean id="animalFeeder" class="org.test.spring.autowire.impl.AnimalFeederImpl" autowire="constructor"/>
<bean id="animalFeeder" class="org.test.spring.autowire.impl.AnimalFeederImpl" autowire="constructor"/>
<bean id="feederMgr" class="org.test.spring.autowire.impl.FeederFactory" autowire="constructor"/>
Спасибо!
Спасибо за быстрый ответ. Извините, мне было немного ленив, чтобы отформатировать все строки, отсюда только сложенный скелет. – Saravanan