variable springframework org method example beans application annotation java spring dependency-injection properties properties-file

springframework - Spring Property Injection en un atributo final @Value-Java



spring boot static final properties (2)

La única forma de inyectar valores en un campo final es a través de Inyección de Constructor . Todo lo demás sería un truco horrible en el lado de Spring.

Una pregunta simple sobre la inyección de Spring de un archivo de propiedades para un atributo final.

Tengo un archivo de propiedades en el que quiero almacenar una ruta de archivo. Generalmente, cuando uso archivos de propiedades, configuro atributos de clase utilizando algo como esto:

private @Value("#{someProps[''prop.field'']}") String someAttrib ;

Entonces en mi spring.xml tendría algo como:

<util:properties id="someProps" location="classpath:/META-INF/properties/somePropFile.properties" />

Esto funciona bien, es simple y hace que el código sea agradable y limpio. Pero no estoy seguro de cuál es el patrón más elegante que se debe usar al intentar inyectar valores de propiedades en los atributos de la clase final.

Obviamente algo como:

private static final @Value("#{fileProps[''dict.english'']}") String DICT_PATH;

no trabajará. ¿Hay otra manera?

¡Aclamaciones!


Si buscas un ejemplo:

public class Test { private final String value; public Test(@Value("${some.value}") String value){ this.value=value; System.out.println(this.value); } }