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

标签 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

使用 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/

相关文章:

c - 在 C 中将整个数组作为一个变量

arrays - `+=` block 内的 `<<` 和 `each_with_object` 之间的区别

java - TDD 和软件设计之间有什么关系?

java - Double 无法转换为 JTextField

python - 如何将 1d 数组转换为 3d 数组(将灰度图像转换为 rgb 格式)?

java - 在 @RestController 的 @PathVariable 上自定义 @JsonDeserialize

java - 在 Spring Data REST 中使用嵌套投影

设置了 server.context-path 的 Spring Boot Actuator 端点

java - 在 testng @AfterMethod 中检测测试失败

Java DecimalFormatter - Locale DE 和 Locale US 之间的不同行为