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 и проанализировать его, но есть ли лучшее решение?
Ответы
Ответ 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