您可以在不使用<list>
元素的情况下在Spring application-context.xml文件中创建List吗?
我有一个bean,其构造函数采用Collection
对象,我想通过“value”属性传递整个列表。原因是此值来自.properties文件,您无法在.properties文件中定义列表。
我想做这样的事情......有可能吗?
MyClass.java:
public class MyClass{
public MyClass(Collection<String> collection){ /* ... */ }
}
应用context.xml中:
<bean name="myBean" class="com.company.MyClass">
<constructor-arg value="${the.value}" />
</bean>
.properties文件:
the.value=item1,item2,item3
感谢。
答案 0 :(得分:10)
<bean name="myBean" class="com.company.MyClass">
<constructor-arg>
<bean class="org.springframework.util.StringUtils" factory-method="commaDelimitedListToSet">
<constructor-arg type="java.lang.String" value="${the.value}"/>
</bean>
</constructor-arg>
</bean>
答案 1 :(得分:3)
问题的一个可能解决方案是将单个字符串传递给构造函数,然后使用String.split()
解析构造函数中的列表。
答案 2 :(得分:2)
我不相信,但你可以有一个构造函数从字符串构建列表。
(实际上,并不完全确定我是对的 - 您可能会使用自定义占位符配置器来玩重要游戏,不管您
答案 3 :(得分:1)
这很有效。 您可以使用SPEL。
在bean配置中,
<property name="collection" value="#{{'item1','item2','item3'}}"/>