java - leer - propertysourcesplaceholderconfigurer
Archivo Spring.properties: get element as a Array (3)
Aquí hay un ejemplo de cómo puedes hacerlo en Spring 4.0+
contenido de application.properties
:
some.key=yes,no,cancel
Código de Java:
@Autowire
private Environment env;
...
String[] springRocks = env.getProperty("some.key", String[].class);
Estoy cargando atributos de propiedades de un archivo .properties
usando Spring de la siguiente manera:
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
El archivo xml de primavera
file: myapplication.xml
<bean id="some"
class="com.some.Class">
<property name="property" value="#{base.module.elementToSearch}" />
</bean>
Y mi Class.java
file: Class.java
public void setProperty(final List<Integer> elements){
this.elements = elements;
}
Pero cuando se depura, los elementos de parámetro solo obtienen el último elemento en la lista, por lo tanto, hay una lista de un elemento con el valor "6", en lugar de una lista con 6 elementos.
#{base.module}
otros enfoques, como agregar valor solo a #{base.module}
pero luego no encuentra ningún parámetro en el archivo de propiedades.
Una solución alternativa es tener en elements.properties una lista separada por comas, como:
base.module.elementToSearch=1,2,3,4,5,6
y usarlo como una cadena y analizarlo, pero ¿hay una mejor solución?
Si defines tu matriz en el archivo de propiedades como:
base.module.elementToSearch=1,2,3,4,5,6
Puede cargar dicha matriz en su clase Java de esta manera:
@Value("${base.module.elementToSearch}")
private String[] elementToSearch;
Y en caso de que tenga un delimitador diferente a la coma, también puede usarlo.
@Value("#{''${my.config.values}''.split('','')}")
private String[] myValues; // could also be a List<String>
y
en sus propiedades de aplicación podría tener
my.config.values=value1, value2, value3