2013-07-05 47 views
20

我正在使用外部庫,它要求我使用XML Bean定義對其進行配置;在Bean定義中,我需要從我的項目中爲Bean提供一個外部類。我正在使用組件掃描的Spring註釋。在XML Bean定義中引用帶註釋的Spring組件

如何在XML Bean定義中引用帶批註的Bean?

有沒有其他方法可以創建XML Bean定義?

詳情:春3.0.7

回答

31

不管它是怎麼產生(基於XML或annotation-元數據),每個bean的下一個唯一的名稱應用程序上下文結束。

如果您剛剛標註有@Component或其衍生物類,不說明任何名稱,默認的命名方案將應用和bean名稱將是你的類名以小寫的第一個字符:ClassName => "className"

考慮到這一點,如果你需要在一個XML bean定義來注入豆,你不喜歡它,在你的情況下其它bean:

<bean id="someBean" class="SomeClass"> 
    <property name="someProp" ref="className"/><!-- to stick to the above example --> 
</bean> 

由於您使用XML註釋混合,應用程序上下文將能夠正確定位「className」bean。

6

@Service註釋帶有一個可選的String值,可用於給該bean一個你選擇的名稱。例如,如果您的自定義bean的樣子:

@Service("mySpecialName") 
public class MyClass { ... } 

那麼你的XML可以有:

<bean class="com.someone.else.library.SomeClass"> 
    <property name="someProp" ref="mySpecialName"/> 
</bean> 
0

確保選中添加下面的代碼在XML文件中

<context:component-scan base-package="" /> 
<context:annotation-config /> 
+0

@Mike已經提到他正在使用註釋bean。 –