我有一堂这样的课:
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
使用 spring,我可以通过这种方式连接属性:
<property name="arrays">
<map>
<entry key="arrayOne" value="${arrays.arrayOne}"/>
<entry key="arrayTwo" value="${arrays.arrayTwo}"/>
</map>
</property>
现在,这可以工作,但每次在属性文件中添加新条目时,我都必须手动编辑接线。有更好的方法吗?
最佳答案
我使用 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>
(我也可以直接在我的类中初始化 map 以使代码更简洁)
# my.properties
myBean.arrays[arrayOne]=a,b,c
myBean.arrays[arrayTwo]=d,e,f
这就是所需要的一切,并且 spring 正确填充了 map ,无需进一步配置即可更新属性文件的添加内容。在我的 bean 上调用 getArray("arrayOne") 会按预期返回一个字符串数组 {"a", "b", "c"}。
关于java - 使用 Spring 自动从属性文件连接多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6862514/