我有三个 (A,B,C) spring context.xml,其中A用于基本配置,B和C导入A。
在A的bean中有:
<bean class="com.example.Ex"> <property name="aString" value="${myString}" /> </bean>
现在我想在B和C上定义属性 myString,是否可以在不创建和加载两个不同的属性文件的情况下完成?
我有三个 (A,B,C) spring context.xml,其中A用于基本配置,B和C导入A。
在A的bean中有:
<bean class="com.example.Ex"> <property name="aString" value="${myString}" /> </bean>
现在我想在B和C上定义属性 myString,是否可以在不创建和加载两个不同的属性文件的情况下完成?
这样做:
A
<bean class="com.example.Ex">
<property name="aString" ref="str" />
</bean>
然后在B和C的上下文中,您可以通过以下方式声明“str”引用:
B
<bean id="str" class="java.lang.String">
<constructor-arg value="string_1"/>
</bean>
C
<bean id="str" class="java.lang.String">
<constructor-arg value="string_2"/>
</bean>
为了完整性,这里介绍另一种创建字符串的方式:
与调用String构造函数不同,它会强制创建一个不必要的新对象,使用valueOf方法可能是一个更好的选择,它可以作为一个“什么也不做”的构造函数:
<bean id="str" class="java.lang.String" factory-method="valueOf">
<constructor-arg value="string_1"/>
</bean>
然而,这只是学术上的问题,因为解析额外的XML属性会导致产生字符串的开销,可能会比调用valueOf方法而不是构造函数所获得的性能收益更大。
这也是其中一种方法。
<bean id="str" class="com.example.Ex">
<constructor-arg type="java.lang.String" value="INDIA"/>