Sobes.tech
Junior

A cosa serve l'annotazione @Bean nel Spring Framework?

sobes.tech AI

Risposta dell'AI

L'annotazione @Bean viene utilizzata in Spring per dichiarare metodi che producono bean (oggetti gestiti dal contenitore IoC di Spring). Il metodo annotato con @Bean viene eseguito da Spring, e il suo valore di ritorno viene registrato come un bean nel contesto dell'applicazione.

Principali casi d'uso:

  • Configurazione di librerie esterne: Quando non è possibile applicare annotazioni Spring (@Component, @Service, ecc.) alle classi di librerie esterne.
  • Configurazione dettagliata di creazione di bean: Quando è richiesta una logica di inizializzazione complessa, difficile o impossibile da realizzare con annotazioni.
  • Creazione condizionale di bean: Insieme alle annotazioni @Conditional per creare bean in base a determinate condizioni.

Esempio di creazione di un bean con @Bean:

// In una classe annotata con @Configuration
@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        // Logica complessa di creazione di DataSource
        return new com.zaxxer.hikari.HikariDataSource(); // Esempio
    }

    @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder) {
        // Configurazione di RestTemplate
        return builder.setConnectTimeout(Duration.ofSeconds(5))
                      .setReadTimeout(Duration.ofSeconds(5))
                      .build();
    }
}

I bean dichiarati con @Bean sono disponibili per l'iniezione (dependency injection) in altri componenti Spring. Per impostazione predefinita, il nome del bean corrisponde al nome del metodo, ma può essere impostato esplicitamente usando gli attributi name o value.

// Assegnazione esplicita del nome del bean
@Bean(name = "myCustomRestTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
    // ...
    return builder.build();
}