Junior
Para que é que é utilizada a anotação @Bean no Spring Framework?
sobes.tech IA
Resposta da IA
A anotação @Bean é usada no Spring para declarar métodos que produzem beans (objetos geridos pelo contêiner IoC do Spring). O método marcado com @Bean é executado pelo Spring, e o valor de retorno é registado como um bean no contexto da aplicação.
Principais casos de uso:
- Configuração de bibliotecas externas: Quando não é possível aplicar anotações Spring (@Component, @Service, etc.) às classes de bibliotecas externas.
- Configuração detalhada de criação de beans: Quando é necessária lógica de inicialização complexa, difícil ou impossível de realizar com anotações.
- Criação condicional de beans: Juntamente com as anotações
@Conditionalpara criar beans dependendo de certas condições.
Exemplo de criação de um bean com @Bean:
// Em uma classe anotada com @Configuration
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
// Lógica complexa de criação de DataSource
return new com.zaxxer.hikari.HikariDataSource(); // Exemplo
}
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
// Configuração do RestTemplate
return builder.setConnectTimeout(Duration.ofSeconds(5))
.setReadTimeout(Duration.ofSeconds(5))
.build();
}
}
Beans declarados com @Bean estão disponíveis para injeção (dependency injection) em outros componentes do Spring. Por padrão, o nome do bean corresponde ao nome do método, mas pode ser explicitamente definido usando o atributo name ou value.
// Definição explícita do nome do bean
@Bean(name = "myCustomRestTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
// ...
return builder.build();
}