Spring .properties file: получить элемент как массив - PullRequest
72 голосов
/ 02 июня 2011

Я загружаю атрибуты свойств из файла .properties с помощью Spring следующим образом:

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-файл Spring

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

и использовать его как строку и анализировать его, но есть ли лучшее решение?

Ответы [ 3 ]

148 голосов
/ 20 июня 2011

Если вы определите свой массив в файле свойств следующим образом:

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

Вы можете загрузить такой массив в свой класс Java следующим образом:

  @Value("${base.module.elementToSearch}")
  private String[] elementToSearch;
21 голосов
/ 26 ноября 2015

Вот пример того, как вы можете сделать это в Spring 4.0 +

application.properties content:

some.key=yes,no,cancel

Java Code:

@Autowire
private Environment env;

...

String[] springRocks = env.getProperty("some.key", String[].class);
19 голосов
/ 19 августа 2016

И если вы используете другой разделитель, отличный от запятой, вы также можете использовать его.

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

и

в свойствах вашего приложения вы можете иметь

my.config.values=value1, value2, value3
...