Mam problem z niektórymi definicjami komponentu bean. Mam kilka kontekstowych plików xml, które są ładowane przez moją metodę main(), a obie zawierają prawie wyłącznie znacznik. Kiedy zaczyna się mój główny sposób, otrzymuję ten błąd od wiosny:Konflikty nazw określone przez adnotację są w konflikcie z istniejącym, niekompatybilnym defektem ziarnowym.
Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'converterDAO' for bean class [my.package.InMemoryConverterDaoImpl] conflicts with existing, non-compatible bean definition of same name and class [my.other.package.StaticConverterDAOImpl]
Obie klasy DAO są opisywane w ten sposób:
@Repository("converterDAO")
public class StaticConverterDAOImpl implements ConverterDAO {
...
}
in-memory dao ma również @Repository ("converterDAO") adnotacja. DAO jest wymieniony w innych klasach tak:
...
private @Autowired @Qualifier("converterDAO") ConverterDAO converterDAO;
...
chcę jeden DAO zastąpić definicję drugiego, który jak zawsze rozumiany był to jeden z głównych powodów, aby używać ramy DI w pierwszym miejsce. Robiłem to z definicjami XML przez lata i nigdy nie miałem żadnych problemów. Ale nie w przypadku skanów komponentów i definicji z przypisanymi fasolami? A co oznacza Spring, kiedy mówi, że nie są "kompatybilne"? Implementują ten sam interfejs i są autowyredowane na pola o tym typie interfejsu. Dlaczego do cholery oni nie są zgodni?
Czy ktoś może zapewnić mi sposób na jedną przesłoniętą adnotację, komponentową fasolkę, aby zastąpić inną?
-Mike
jest coś śmiesznego z tobą drugi fragment kodu ... proszę sprawdź to. – Yevgeniy
Może musisz udostępnić swoją główną metodę? –
Proszę dodać rzeczywistą deklarację pola converterDAO. Czy jest to interfejs lub implementacja 'ConverterDao' - nie wynika to z pytania. –