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);
}
}