2017-05-08 813 views
0

假設我有一個Maven項目A和項目B,項目B我將它添加爲項目A中的一個jar,當我嘗試運行項目A時,它給了我錯誤「bean name」xyz「與現有的,相同的名稱和類的非兼容的bean定義如何解決Maven項目中兩個具有相同名稱的bean的衝突?

因此,任何人都有解決這個忽略豆‘XYZ’B項目和運行只有‘A項目XYZ’豆或有任何註釋或者類似的東西那?

+0

有這種情況是一種代碼味道。也許是時候重新考慮重構了? –

+0

在項目B的bean「xyz」上使用@Lazy可能是一種方法嗎? –

+0

@NielsBechNielsen實際上,我已經創建了與球衣原型的maven項目,因此項目A和B都包含相同的球衣配置文件,..其默認創建的類。這就是爲什麼。現在你能告訴我一些可以工作的東西嗎? – Manish

回答

-1

EG在您的類文件中使用Qualifier Annotation。 例如 -

@Autowired @Qualifier("ProjectA") 
+0

你的意思是 @Autowired @Qualifier(「xyz」)???因爲它的bean或類是衝突的。 也是我沒有xml文件..只是pom xml ..我正在使用java註釋 – Manish

+0

對不起,我的壞,你必須把它放在類文件註釋錯字 –

+0

它沒關係,感謝您的快速響應。 班上課是否需要寫 @Qualifier(xyz.class)? – Manish

0

您可以使用Qualifier批註來實現此目的。

@Qualifier("ProjectA") 

or 

@Qualifier("complete.package.ProjectA") 
+0

我可以知道ans給我和urs之間有什麼區別 –

0

使用@Primary註釋可以編輯B到排除類文件POM文件在配置類上的bean defenition上

@Bean(name = "beanOnA") 
@Primary 
public YourInterface yourBeanOnProjectA(){ 
    return new YourClass("Bean on Project A"); 
} 

當自動裝配bean時指定是使用限定符註釋的名稱。

@Autowired 
@Qualifier("beanOnA") 
YourInterface yourInterface; 
相關問題