Sobes.tech
Junior

La ce se folosește adnotarea @Bean în Spring Framework?

sobes.tech AI

Răspuns de la AI

Adnotarea @Bean este utilizată în Spring pentru a declara metode care produc beans (obiecte gestionate de containerul IoC al Spring). Metoda marcată cu @Bean este executată de Spring, iar valoarea sa de retur este înregistrată ca un bean în contextul aplicației.

Cazurile principale de utilizare:

  • Configurarea bibliotecilor externe: Când nu se pot aplica adnotări Spring (@Component, @Service etc.) la clasele bibliotecilor externe.
  • Configurarea fină a creării bean-urilor: Când este necesară o logică complexă de inițializare a obiectului, dificil sau imposibil de realizat cu adnotări.
  • Crearea condiționată a bean-urilor: Împreună cu adnotările @Conditional pentru a crea bean-uri în funcție de anumite condiții.

Exemplu de creare a unui bean cu @Bean:

// Într-o clasă marcată cu @Configuration
@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        // Logică complexă de creare a DataSource
        return new com.zaxxer.hikari.HikariDataSource(); // Exemplu
    }

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

Bean-urile declarate cu @Bean sunt disponibile pentru injecție (dependency injection) în alte componente Spring. În mod implicit, numele bean-ului corespunde cu numele metodei, dar poate fi setat explicit cu atributele name sau value.

// Stabilirea explicită a numelui bean-ului
@Bean(name = "myCustomRestTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
    // ...
    return builder.build();
}