【发布时间】:2011-09-06 23:03:08
【问题描述】:
我正在使用 Spring 从.properties 文件中加载属性属性,如下所示:
file: elements.properties
base.module.elementToSearch=1
base.module.elementToSearch=2
base.module.elementToSearch=3
base.module.elementToSearch=4
base.module.elementToSearch=5
base.module.elementToSearch=6
spring xml 文件
file: myapplication.xml
<bean id="some"
class="com.some.Class">
<property name="property" value="#{base.module.elementToSearch}" />
</bean>
还有我的 Class.java
file: Class.java
public void setProperty(final List<Integer> elements){
this.elements = elements;
}
但是在调试的时候,参数元素只取最后一个元素进入列表,所以,有一个值为“6”的元素的列表,而不是6个元素的列表。
我尝试了其他方法,例如仅添加值 #{base.module} 但随后在属性文件中找不到任何参数。
一种解决方法是在 elements.properties 文件中包含一个用逗号分隔的列表,例如:
base.module.elementToSearch=1,2,3,4,5,6
把它当成String来解析,但是有没有更好的解决方案呢?
【问题讨论】:
-
所以我需要将它作为逗号分隔的字符串传递并在方法中解析。
-
没错,虽然已经有一些库已经为你做到了(apache commons)-commons.apache.org/configuration/howto_properties.html
-
这是一个至少给你一个 Set
结果的答案。不完全是 List ,但在许多情况下可能就足够了! stackoverflow.com/questions/5274362/… -
@Value("${key:one,two,three}") String[] arrayWithDefaults;
标签: java spring placeholder properties-file