Sobes.tech
Junior

K čemu slouží anotace @Bean ve Spring Frameworku?

sobes.tech AI

Odpověď od AI

Anotace @Bean se v Springu používá k deklaraci metod, které vytvářejí beany (objekty spravované kontejnerem IoC Springu). Metoda označená @Bean je Springem volána a její návratová hodnota je zaregistrována jako bean v kontextu aplikace.

Hlavní případy použití:

  • Konfigurace externích knihoven: Když nelze použít anotace Spring (@Component, @Service atd.) na třídy z externích knihoven.
  • Jemné nastavení tvorby beanu: Když je potřeba složitá inicializační logika, kterou je obtížné nebo nemožné realizovat pomocí anotací.
  • Podmíněná tvorba beanů: Spolu s anotacemi @Conditional pro tvorbu beanů v závislosti na určitých podmínkách.

Příklad tvorby beanu pomocí @Bean:

// Ve třídě označené `@Configuration`
@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        // Složitá logika tvorby DataSource
        return new com.zaxxer.hikari.HikariDataSource(); // Příklad
    }

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

Bean, které jsou deklarovány pomocí @Bean, jsou dostupné pro injekci (dependency injection) v jiných komponentách Springu. Výchozí název beanu odpovídá názvu metody, ale lze jej explicitně nastavit pomocí atributů name nebo value.

// Explicitní nastavení názvu beanu
@Bean(name = "myCustomRestTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
    // ...
    return builder.build();
}