我有一个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代码中解析此字符串。
还有更好的主意吗?
答案 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) {
...
}
}