Junior
¿Para qué se utiliza la anotación @Bean en Spring Framework?
sobes.tech AI
Respuesta de la IA
La anotación @Bean se utiliza en Spring para declarar métodos que producen beans (objetos gestionados por el contenedor IoC de Spring). El método marcado con @Bean es ejecutado por Spring, y su valor de retorno se registra como un bean en el contexto de la aplicación.
Casos principales de uso:
- Configuración de bibliotecas externas: Cuando no se pueden aplicar anotaciones de Spring (@Component, @Service, etc.) a clases de bibliotecas externas.
- Configuración fina de la creación de beans: Cuando se requiere lógica compleja de inicialización del objeto, difícil o imposible de realizar con anotaciones.
- Creación condicional de beans: Junto con las anotaciones
@Conditionalpara crear beans dependiendo de ciertas condiciones.
Ejemplo de creación de un bean con @Bean:
// En una clase anotada con @Configuration
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
// Lógica compleja para crear DataSource
return new com.zaxxer.hikari.HikariDataSource(); // Ejemplo
}
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
// Configuración de RestTemplate
return builder.setConnectTimeout(Duration.ofSeconds(5))
.setReadTimeout(Duration.ofSeconds(5))
.build();
}
}
Los beans declarados con @Bean están disponibles para inyección (dependency injection) en otros componentes de Spring. Por defecto, el nombre del bean coincide con el nombre del método, pero puede establecerse explícitamente usando el atributo name o value.
// Asignación explícita del nombre del bean
@Bean(name = "myCustomRestTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
// ...
return builder.build();
}