propertysourcesplaceholderconfigurer propertysource property leer example context application java spring placeholder properties-file

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