La anotación @Configuration
en Spring Boot se utiliza para indicar que una clase define uno o más beans que serán gestionados por el contenedor de IoC de Spring. Esta es una forma moderna de configurar aplicaciones Spring, reemplazando configuraciones basadas en XML.
Las clases marcadas con @Configuration
permiten definir beans de manera explícita usando métodos anotados con @Bean
. Esto ofrece un control más detallado sobre cómo se crean y configuran los objetos de la aplicación.
@Configuration
en Spring Boot?
Cuando el contenedor de Spring detecta una clase con @Configuration
, la trata como una fuente de definiciones de beans. Los métodos dentro de esta clase que están anotados con @Bean
se ejecutan para crear y registrar esos beans en el contexto de la aplicación.
@Configuration
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Bean
public Motor motor() {
return new Motor("V8");
}
@Bean
public Vehiculo vehiculo() {
return new Vehiculo(motor());
}
}
En este ejemplo:
1. La clase AppConfig
está anotada con @Configuration
.
2. Define dos beans: Motor
y Vehiculo
.
3. La dependencia entre los beans se resuelve directamente llamando al método motor()
dentro de vehiculo()
.
@Configuration
Anotación | Descripción |
---|---|
@Configuration
|
Indica que la clase contiene definiciones de beans y configuraciones. |
@Bean
|
Marca un método para definir un bean administrado por Spring. |
@ComponentScan
|
Escanea paquetes para detectar clases anotadas con @Component , @Service , etc.
|
@PropertySource
|
Carga propiedades desde un archivo de configuración externo. |
@Configuration
Spring Boot permite usar @Configuration
junto con propiedades externas para configurar beans dinámicamente:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Value("${vehiculo.nombre}")
private String vehiculoNombre;
@Bean
public Vehiculo vehiculo() {
return new Vehiculo(vehiculoNombre);
}
}
En este ejemplo, el valor de vehiculo.nombre
se carga desde el archivo application.properties
.
Para más información, consulta la documentación oficial de Spring.
Jorge García
Fullstack developer