如何使用.properties文件中的值初始化spring bean中的集合

时间:2014-02-20 06:19:49

标签: java spring properties configuration-files

我有一个spring bean(我们称之为MagicBean),其中HashSet<String>为其属性之一。

我知道如何初始化这样的集合:

<bean id="mySet" class="org.springframework.beans.factory.config.SetFactoryBean">
    <property name="targetSetClass" value="java.util.HashSet"/>
    <property name="sourceSet">
        <set>
            <value>Value 1</value>
            <value>Value 2</value>
            <value>Value 3</value>
        </set>
    </property>
</bean>

<bean id="magicBean" class="MagicBean">
    <property name="mySet" ref="mySet"/>
</bean>

有没有办法使用.properties文件中的值设置集合中的值,而不是在xml中对这些值进行硬编码?

更新1: 由于我在不同的环境中可能有不同数量的值,因此使用xml中的硬编码集将无效。这就是为什么我需要以某种方式从属性文件中获取这些值。

更新2: 我想出了一个快速而肮脏的方法,将所有值列为.properties文件中的单个字符串,然后将此值设置为MagicBean。然后在Java代码中解析此字符串。 还有更好的主意吗?

2 个答案:

答案 0 :(得分:1)

您可以使用:

<value>${my.set.value1}/value>

并在属性文件中设置值:

my.set.value1=Value1

答案 1 :(得分:1)

尝试这样的事情

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:util="http://www.springframework.org/schema/util" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/util
                           http://www.springframework.org/schema/util/spring-util.xsd
                           ">
    <bean class="B1">
        <property name="Props">
            <util:properties location="classpath:test.properties" />
        </property>
    </bean>
</beans>

这是B1

class B1 {
    public void setProps(Properties props) {
        ...
    }
}