我该如何从XML配置文件中设置Spring属性?

9

我有一些使用属性的Spring配置,如下所示:

<bean id="foo" class="...">
    <constructor-arg value="${aProperty}"/>
</bean>

显然我知道可以通过拥有一个属性文件(比如example.properties)来解决这个属性问题:
aProperty=value

将此文件导入Spring配置:

<bean id="propertyConfiguration" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>example.properties</value>
        </list>
    </property>
</bean>

我的问题是,我是否可以直接在XML文件中设置这个属性,而不必创建单独的属性文件?像这样做会更理想:
<set-property name="aProperty" value="value"/>

Maven在pom文件中有类似的功能:

<properties><aProperty>value</aProperty></properies>
1个回答

12

使用属性文件的目的是将值与Spring配置文件解耦,因此在同一配置文件中定义属性有点奇怪。然而,您始终可以将属性添加到PropertyPlaceholderConfigurer:

<bean id="propertyConfiguration" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>example.properties</value>
        </list>
    </property>
    <property name="properties">
        <props>
            <prop key="aa">bb</prop>
            <prop key="cc">dd</prop>
        </props>
    </property>
</bean>
希望能对你有所帮助。

1
完美。想要这样做的原因是属性值本身是传递给第三方库的属性文件的名称。由于这是我应用程序的6个以上实例之间唯一不同的属性,我不想创建六个新的属性文件,其中每个文件都有一个另一个属性文件的名称! - tonicsoft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接