Sobes.tech
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 @Conditional para 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();
}