我有一些Spring bean,其中一些在共享庫jar中。我似乎無法獲得@Qualifier
的工作。當bean在另一個jar文件中時,Spring @Qualifier不工作
我有默認自動裝置設置爲「byType」,這是使用Spring 3.1.0.M2並作爲獨立的可執行文件運行。如果從共享庫中刪除「TestTwoBean」,項目將按預期執行。
的Myproj-共享lib.jar:
@Service
public class TestOneBean implements ITestBean {
}
@Service
public class TestTwoBean implements ITestBean {
}
myproj.jar:
@Service
public class TestConsumerBean {
@Autowired @Qualifier("testOneBean")
private ITestBean bean;
}
我得到異常「與名稱的唯一豆」 在運行時:
org.springframework.beans.factory.UnsatisfiedDependencyException: 在文件[ - ]中定義的名稱爲'testConsumerBean'的bean創建時出錯: 通過bean屬性'bean'表示的不滿足的依賴關係::否 類型爲[com.myco。 ITestBean]被定義爲:期望單個 匹配bean,但找到2:[testOneBean,testTwoBean];嵌套0例外是 org.springframework.beans.factory.NoSuchBeanDefinitionException:類型的無 獨特豆[com.myco.TestBean]被定義:預期單個 匹配豆但發現2:[testOneBean,testTwoBean]在 org.springframework .beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1167) ...
是否@Qualifier
沒有在這種情況下工作嗎?有沒有已知的解決方法?
一些好點。該應用程序的其餘部分最初使用零配置方法(byType autowiring,no annotations),但是這個新的重複bean問題違反了約定。看起來好像沒有簡單的方法來混合這兩種方法,所以我重構了整個代碼庫以使用嚴格的接線(default-autowire =「no」)並且註釋所有的bean。這已經解決了這個例外,並且應該避免這種類型的未來回歸。謝謝! – seanhodges 2012-03-05 12:14:25