Ich habe ein Problem mit einigen Spring Bean-Definitionen. Ich habe ein paar Kontext-XML-Dateien, die von meiner main() -Methode geladen werden, und beide enthalten fast ausschließlich ein Tag. Als meine Hauptmethode startet, erhalte ich diese Störung von Spring:Der Name des Annotation-spezifizierten Beans steht im Konflikt mit dem vorhandenen nicht-kompatiblen Bean def
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]
Beide DAO-Klassen mit Anmerkungen versehen werden auf diese Weise:
@Repository("converterDAO")
public class StaticConverterDAOImpl implements ConverterDAO {
...
}
Die In-Memory-dao hat auch die @Repository ("converterDAO") Annotation. Die dao in anderen Klassen wie folgt verwiesen:
...
private @Autowired @Qualifier("converterDAO") ConverterDAO converterDAO;
...
ich ein DAO wollen die Definition des anderen außer Kraft zu setzen, die, wie ich immer war es verstanden einer der Hauptgründe, einen DI Rahmen in der ersten verwenden Ort. Ich mache das seit Jahren mit XML-Definitionen und hatte nie Probleme. Nicht so bei Komponenten-Scans und annotierten Bean-Definitionen? Und was bedeutet Frühling, wenn es sagt, dass sie nicht "kompatibel" sind? Sie implementieren die gleiche Schnittstelle und werden in Felder mit diesem Schnittstellentyp automatisch eingefügt. Warum zum Teufel sind sie nicht kompatibel?
Kann mir jemand eine Möglichkeit geben, dass eine mit Anmerkungen versehene Komponente gescannte Bean überschreibt?
-Mike
gibt es etwas komisches mit Ihnen zweiten Code schnippeln ... bitte überprüfen Sie es. – Yevgeniy
Vielleicht müssen Sie Ihre Hauptmethode teilen? –
Bitte fügen Sie die tatsächliche Deklaration des converterDAO Felds hinzu. Ist es eine 'ConverterDao'-Schnittstelle oder Implementierung? Es ist nicht klar aus der Frage. –