我有一個包道:ConflictingBeanDefinitionException:相同的類名,不同的封裝
package com.mypackage.dao;
@Repository
public class MyDao {
// some code here
}
我有一個子包相同的類名的另一個道:
package com.mypackage.one.dao;
@Repository
public class MyDao {
// some other code here
}
我有第三類我試圖用自動裝配注入bean:
import com.mypackage.one.dao;
public class TestClass{
@Autowired
private MyDao myDao;
}
部署時,我得到以下摹錯誤:
Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'myDao' for bean class [com.mypackage.dao.MyDao] conflicts with existing, non-compatible bean definition of same name and class [com.mypackage.one.dao.MyDao]
我的applicationContext.xml有:
<context:component-scan base-package="com.mypackage.dao"/>
<context:component-scan base-package="com.mypackage.one.dao"/>
我不能作爲其重命名類的傳統應用程序。
這是什麼解決方案?
我試過使用限定符,但那是行不通的。
添加下面一行:
<bean id="oneMyDao" class="com.mypackage.one.dao.MyDao" />
,改變了自動裝配來:
@Autowired
@Qualifier("oneMyDao")
private MyDao myDao;
但它仍然拋出了同樣的錯誤。