Подтвердить что ты не робот

Spring.properties file: получить элемент как массив

Я загружаю атрибуты свойств из файла .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

Файл Spring 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}, но затем он не обнаружил никакого параметра в файле свойств.

Обходной путь заключается в том, чтобы иметь в element.properties файл список, разделенный запятыми, например:

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

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

4b9b3361

Ответ 1

Если вы определяете свой массив в файле свойств, например:

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

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

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

Ответ 2

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

application.properties содержание:

some.key=yes,no,cancel

Код Java:

@Autowire
private Environment env;

...

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

Ответ 3

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

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

и

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

my.config.values=value1, value2, value3