2011-07-11 56 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而不是构造函数的性能增益。