Spring Boot Configuración de Propiedades
Tabla de contenido
@ConfigurationProperties es una característica de Spring Boot que permite vincular configuraciones externas a una clase Java.
Mapea nombres de propiedades a campos de una clase Java, facilitando la gestión de configuraciones externas.
Por lo tanto, podemos utilizar esta funcionalidad de Spring si queremos establecer las propiedades en una clase Java.
Dependencias #
Necesitará al menos esta dependencia.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
Cómo utilizar las propiedades de configuración con una clase Java Pojo #
Las propiedades pueden ser especificadas desde tus archivos application.properties.
La clase anotada puede entonces ser usada para acceder a las propiedades en el código de tu aplicación. Esto ayuda a separar la configuración de la implementación, haciéndola más fácil de gestionar y mantener.
He aquí un ejemplo sencillo de cómo utilizar @ConfigurationProperties en una aplicación Spring Boot:
Si tenemos este fichero de propiedades:
app.name=The name of this app
app.description=This description of this app
Podemos establecer estas propiedades en una clase Java de forma automática. Para ello, hay que anotar la clase Java con estas dos anotaciones:
- @ConfigurationProperties
- @Component
El prefijo en ConfigurationProperties tiene que ser igual al prefijo de la propiedad.
@ConfigurationProperties(prefix = "app")
@Component
public class AppInfo {
private String name;
private String description;
// set and get..
@Override
public String toString() {
return "AppInfo{" +
"name='" + name + '\'' +
", description='" + description + '\'' +
'}';
}
}
Observe cómo el prefijo de la propiedad se une con la anotación y cada propiedad con el atributo class.
Cómo usar las propiedades de configuración con un Bean de Spring #
Esta forma es similar a la anterior que aprendimos veamos como se utiliza.
Por ejemplo, para estas propiedades:
app.mail.hostname=host@mail.com
app.mail.port=9000
app.mail.from=mailer@mail.com
Vamos a definir la clase AppConfig y la anotamos con @Configuration.
La clase AppConfig es una clase de @Configuration que define un componente con la anotación @Bean.
El método mailData() devuelve una instancia de MailData y se anota con @ConfigurationProperties pasando como
parámetro el prefijo “app.mail” para especificar que sus atributos (los de la clase MailData) deben ser llenados con las propiedades que tienen el prefijo “app.mail”.
@Configuration
public class AppConfig {
@Bean
@ConfigurationProperties(prefix = "app.mail")
public MailData mailData() {
MailData mailData = new MailData();
return mailData;
}
}
Ejecución de ambos ejemplos #
A continuación, puede utilizar el bean o el componente en otras partes de su aplicación a través de la inyección de dependencias, por ejemplo:
@SpringBootApplication
public class SpringBootConfigurationPropertiesApplication {
@Autowired
AppInfo appInfo;
@Autowired
MailData mailData;
public static void main(String[] args) {
SpringApplication.run(SpringBootConfigurationPropertiesApplication.class, args);
}
@PostConstruct
public void post() {
System.out.println(appInfo);
System.out.println(mailData);
}
}
El resultado de esto es:
AppInfo{name='The name of this app', description='This description of this app'}
MailData{hostName='host@mail.com', port=9000, from='mailer@mail.com'}
Conclusión: #
@ConfigurationProperties es una anotación de primavera utilizada para asignar propiedades de configuración externas a campos de una clase Java, facilitando la obtención de valores de propiedad en sus servicios.
Este código está en GitHub