在spring上下文中定义一个字符串

ras*_*cio 18 spring

我有三个(A,B,C)spring context.xml,A用于基本配置,B和C用于导入A.

在AI上的bean有:

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

现在我想在B和C上下文中定义属性myString,是否可以在没有创建的情况下执行它并加载两个不同的属性文件?

Mr.*_*art 54

您可以通过声明String类型的bean来尝试另一种方法,而不是处理Properties.

这条路:

一个

<bean class="com.example.Ex">
    <property name="aString" ref="str" />
</bean>
Run Code Online (Sandbox Code Playgroud)

然后在B和C上下文中以这种方式声明"str"引用:

<bean id="str" class="java.lang.String">
  <constructor-arg value="string_1"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

C

<bean id="str" class="java.lang.String">
  <constructor-arg value="string_2"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

  • 这是真的……String 类有一个带 String 的构造函数……我没想到……谢谢! (2认同)

yan*_*kee 9

为了完整性,这里有另一种创建字符串的方法:

而不是调用强制不必要地创建新对象的String构造函数,使用valueOf方法可能是更好的主意,该方法可以在此处充当"不执行任何操作"构造函数:

<bean id="str" class="java.lang.String" factory-method="valueOf">
  <constructor-arg value="string_1"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

然而,这只是学术上的,因为解析将导致创建字符串的附加XML属性的开销可能大于调用valueOf而不是构造函数的性能增益.