2011-07-11 91 views
16

我有三個(A,B,C)的context.xml彈簧,A爲基本配置,B和C導入A.限定彈簧上下文字符串

在關於AI豆有:

 
<bean class="com.example.Ex"> 
    <property name="aString" value="${myString}" /> 
</bean> 

現在我想在B和C上下文中定義屬性myString,是否有可能在不創建的情況下加載並加載兩個不同的屬性文件?

回答

49

您可以通過聲明類型爲String的bean來嘗試另一種方式,而不是處理屬性。

這樣:

一個

<bean class="com.example.Ex"> 
    <property name="aString" ref="str" /> 
</bean> 

然後你在乙申報和C上下文中的 「STR」 引用這樣:

<bean id="str" class="java.lang.String"> 
    <constructor-arg value="string_1"/> 
</bean> 

Ç

<bean id="str" class="java.lang.String"> 
    <constructor-arg value="string_2"/> 
</bean> 
+1

這是真的......該String類有一個構造函數與一個字符串...我沒有想到它..謝謝你! – rascio

+0

哪一種練習最好?爲什麼? –

-7

這也是其中之一。

<bean id="str" class="com.example.Ex"> 
<constructor-arg type="java.lang.String" value="INDIA"/> 

+1

這並沒有幫助解決上下文B和C對字符串具有不同的值的問題,這取決於上下文A – Kieran

+0

此外,您還意味着存在Ex類的構造函數,它接受String作爲參數。 –

4

爲了完整這裏創建一個字符串的另一種方式:

,而不是調用它迫使一個新的對象不必要地創建String構造它可能是一個更好的主意,使用的valueOf方法,該方法可以在這裏作爲一個「什麼都不做」的構造函數:

<bean id="str" class="java.lang.String" factory-method="valueOf"> 
    <constructor-arg value="string_1"/> 
</bean> 

然而,這僅僅是作爲學術解析附加的XML attri的開銷會導致字符串被創建的bute可能會大於調用valueOf而不是構造函數的性能增益。