2012-06-13 32 views
6

我有一個應用程序擁有2個相同名稱但位於不同包中的bean。我的Spring應用程序失敗,因爲它無法決定要採用哪個bean。有沒有解決方案?豆目前沒有實現特定的接口..2個包含相同但不同包的bean,如何自動裝配?

見異常的編輯下面的例子: org.springframework.context.annotation.ConflictingBeanDefinitionException: 批註指定bean名稱「所致

dataTransferHandler」的bean類 [aaaaa.ws.handler.DataTransferHandler]具有相同名稱和類的現有的, 非兼容bean定義衝突 [bbbbb.ws.handler.DataTransferHandler]

+0

似乎唯一的解決辦法是以他們的確切名稱引用他們。 – nhahtdh

回答

12

你將不得不給你的bean不同的名稱 - 如果多個bean被定義爲相同的名稱,那麼稍後定義的那個將覆蓋前面定義的那個 - 所以在你的情況下,只有一個bean將以dataTransferHandler的名字存在。

你可以給這兩種豆子不同的名稱,這樣既可以存在,你可以在正確的或者使用注: @AutoWired @Qualifier("dataTransferHandler") OR @Resource(name="dataTransferHandler")

+0

通過給這些bean不同的名字,你的意思是改變類名? – Marco

+0

不,bean名稱 - 如果你明確地命名了它'',或者如果你使用註解'@Service(「aName」)''。它看起來像你的情況,雖然兩個豆有相同的名稱,他們是不同類型的方式正確 –

+0

完美!謝謝解決我的問題!非常感謝您的幫助! – Marco

0

你可以給屬性主要=「真」到你想在自動裝配時有偏好的bean定義。但是,這些bean名稱必須不同。對於相同的bean名稱沒有解決方案。

在運行時您將獲得自動裝配類,那麼主要真實bean將獲得自動裝配的偏好。希望這可以幫助你。乾杯。

相關問題