使用Spring自动从属性文件连接多个数组

时间:2011-07-28 16:40:51

标签: java arrays spring properties

我有一个这样的课程:

class MyClass {
    Map<String, String[]> arrays; 
    public void setArrays(Map<String, String[]> arrays)
    {
        this.arrays = arrays;
    }
    public String[] getArray(String key)
    {
        return arrays.get(key);
    }
}    

这些值来自如下属性文件:

# my.properties
arrays.arrayOne=a,b,c
arrays.arrayTwo=d,e,f

使用弹簧我可以这样连接属性:

<property name="arrays">
    <map>
        <entry key="arrayOne" value="${arrays.arrayOne}"/>
        <entry key="arrayTwo" value="${arrays.arrayTwo}"/>
    </map>
</property>

现在,这可行,但每次在属性文件中添加新条目时,我都必须手动编辑连线。有更好的方法吗?

1 个答案:

答案 0 :(得分:5)

我使用PropertyOverrideConfigurer解决了我的问题:

<!-- applicationContext.xml -->
<bean id="myBean" class="com.myapp.MyClass">
    <property name="arrays">
        <map/>
    </property>
</bean>

<bean class="org.springframework.beans.factory.config.PropertyOverrideConfigurer">
    <property name="location" value="classpath:my.properties"/>
</bean>

(我也可以直接在我的班级中启动地图,使代码更简洁)

# my.properties
myBean.arrays[arrayOne]=a,b,c
myBean.arrays[arrayTwo]=d,e,f

这就是所需要的,并且spring正确地填充了地图,添加到正在更新的属性文件而无需进一步配置。在我的bean上调用getArray(“arrayOne”)会按预期返回一个字符串数组{“a”,“b”,“c”}。