在Spring中合并java.util.Properties

时间:2013-01-11 18:22:26

标签: java spring

我有一个方法,它将java.util.Properties对象作为构造函数参数。它目前正在通过Spring构建(参见docs):

<bean id="myObj" class="myClass">
    <constructor-arg>
        <value>
            prop1=1
            prop2=2
        </value>
    </constructor-arg>
</bean>

现在我想提取这个<value>...</value>块,以便我可以创建从这些基本属性继承但覆盖/删除/添加一些属性的其他Properties bean。请注意,如果可能,我希望保留<value></value>格式。

我尝试使用<util:properties>,但似乎无法使用与<value></value>中相同的格式。

我也尝试使用

<bean id="test" class="java.util.Properties">
    <constructor-args>
        <value>
             test1=1
             test2=2
        </value>
    </constructor-args>
</bean>

似乎即使java.util.Properties中有一个复制构造函数,它也不起作用(给出一个空的Properties对象)。此外,如果我有一个java.util.Properties bean,我将如何使用另一个属性list / bean覆盖/扩展它?

3 个答案:

答案 0 :(得分:0)

你可以这样做:

<bean name="props" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="properties">
        <value>
            test1=1
            test2=2
        </value>

    </property>
</bean>

然后引用其他地方的常用属性集:

<bean id="myObj" class="myClass">
    <constructor-arg ref="props">
    </constructor-arg>
</bean>

答案 1 :(得分:0)

似乎人们审阅我的编辑不是很有帮助而且不理解它。因此,我将在这里发布完整的答案。

<bean name="props" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
 <property name="properties">
    <value>
        test1=1
        test2=2
    </value>

</property>
</bean>

<bean name="props2" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
 <property name="propertiesArray">
  <list>
      <ref bean="props">
      <value>
           test1=OVERRIDE!
      </value>
  </list>
 </property>
</bean>

<bean id="myObj" class="myClass">
 <constructor-arg ref="props2">
 </constructor-arg>
</bean>

答案 2 :(得分:0)

使用Spring 3,你可以这样做:

<util:properties id="myProperties">
    <prop key="test1Key">test1Value</prop>
    <prop key="test2Key">test2Value</prop>
</util:properties>

<bean id="myObj" class="myClass">
    <constructor-arg index="0" ref="myProperties" />
</bean>