我遇到了一些Spring bean定義的問題。我有幾個正在由我的main()方法加載的上下文xml文件,並且它們都包含幾乎完全是標籤。當我的主要方法啓動時,我得到這個錯誤從春:註解指定的bean名稱與現有的非兼容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]
兩個DAO類註釋是這樣的:
@Repository("converterDAO")
public class StaticConverterDAOImpl implements ConverterDAO {
...
}
在內存中的道也有@Repository(「converterDAO」 )註釋。在DAO在其他類中引用這樣的:
...
private @Autowired @Qualifier("converterDAO") ConverterDAO converterDAO;
...
我想一個DAO覆蓋另一個的定義,因爲我始終明白這是在第一次使用DI框架的主要原因之一地點。多年來我一直在用xml定義做這件事,從來沒有任何問題。但是組件掃描和註釋的bean定義不是這樣嗎?當Spring說它們不兼容時,Spring意味着什麼?它們實現相同的接口,並且它們被自動裝配到具有該接口類型的字段中。爲什麼他們不兼容?
有人可以提供一種方法讓一個帶註釋的組件掃描的bean重寫另一個嗎?
-Mike
有一些有趣的事情,你第二個代碼片段...請檢查它。 – Yevgeniy
也許你需要分享你的主要方法? –
請添加converterDAO字段的實際聲明。它是一個'ConverterDao'接口還是實現 - 這個問題並不清楚。 –