Spring.properties文件:将元素作为一个数组

我使用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; } 

但是在debugging的时候,参数元素只会把最后一个元素放到列表中,所以列表中只有一个值为“6”的元素,而不是一个有6个元素的列表。

我尝试了其他方法,比如仅添加值#{base.module}但是在属性文件中找不到任何参数。

解决方法是在elements.properties文件中用逗号分隔列表,如:

 base.module.elementToSearch=1,2,3,4,5,6 

并用它作为一个string,并parsing它,但有没有更好的解决scheme?

如果你在属性文件中定义你的数组,如:

 base.module.elementToSearch=1,2,3,4,5,6 

你可以像这样在你的Java类中加载这样的数组:

  @Value("${base.module.elementToSearch}") private String[] elementToSearch; 

这里是一个如何在Spring 4.0+中实现的例子

application.properties内容:

 some.key=yes,no,cancel 

Java代码:

 @Autowire private Environment env; ... String[] springRocks = env.getProperty("some.key", String[].class); 

除了逗号之外,还有一个不同的分隔符,你也可以使用它。

 @Value("#{'${my.config.values}'.split(',')}") private String[] myValues; // could also be a List<String> 

在你的应用程序属性,你可以有

 my.config.values=value1, value2, value3