Spring .properties 文件:将元素作为数组获取

2022-08-31 09:32:05

我正在使用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

弹簧 xml 文件

file: myapplication.xml
<bean id="some"
      class="com.some.Class">
      <property name="property" value="#{base.module.elementToSearch}" />
</bean>

还有我的班级.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

并将其用作字符串并解析它,但是有更好的解决方案吗?


答案 1

如果在属性文件中定义数组,如下所示:

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

您可以在 Java 类中加载此类数组,如下所示:

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

答案 2

如果您使用逗号以外的其他分隔符,也可以使用它。

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

在应用程序属性中,您可以拥有

my.config.values=value1, value2, value3

推荐