La configuración es una de las partes más importantes de cualquier aplicación, pues permite que se pueda configurar según el entorno de ejecución o el ambiente en el que se desplegará, por suerte Spring boot cuenta con el archivo application.properties
, en el cual podemos guardar todos aquellos valores que pueden cambiar con el tiempo, lo que evita la mala práctica de crear código hardcode o código duro.
Pero la pregunta es, como podemos acceder a estar propiedades desde una aplicación, pues bien, gracias a la inyección de dependencias que caracteriza a Spring Boot, es posible inyectar cualquier propiedad mediante la anotación @Value
, tal como se puede ver a c continuación:
@Configuration
public class ConverterConfig {
@Value("${path.to.prop.name }")
private String myProp;
}
Y el archive application.properties
quedaría de la siguiente forma:
path.to.prop.name=my value
Esto aplica exactamente igual cuando con un archivo application.yml
:
path:
to:
prop:
name:my value
Mediante esta técnica ya no necesitarás poner código duro nunca más.
Oscar como estas, vos sabes que no consigo hacerlo funcionar lo de la inyeccion.
Me esta faltando algo
@Configuration
public class MyProperties
{
@Value(“${spring.datasource.url}”)
private String url;
public String getUrl()
{
return url;
}
public void setUrl(String url)
{
this.url = url;
}
}
Como tiene el archivo application.properties?
Hola Sergio,
Resolviste? Tengo el mismo problema y no logro resolverlo.
Hola,
Creo que el problema viene de que la notación correcta para inyectar valores con la anotación @Value es @Component (para tratar la clase de configuración como un Bean que inyectar en otras clases).
Substituya @Configuration por @Component.
Después puede inyectar su clase en otra clase java en donde quiera utilizarla añadiendo la variable privada:
@Autowired
private MyProperties env;
Nota: He utilizado la inyección en la variable por simplificación pero es una práctica no recomendada puesto que complica la creación de test unitarios entre otros aspectos, para más info -> https://www.javacodegeeks.com/2019/02/field-setter-constructor-injection.html