Sobes.tech
Junior

Na čo sa používa anotácia @Bean v Spring Frameworku?

sobes.tech AI

Odpoveď od AI

Anotácia @Bean sa v Springu používa na deklarovanie metód, ktoré vytvárajú beany (objekty spravované kontejnerom IoC Springu). Metóda označená @Bean je vykonaná Springom a jej návratová hodnota je zaregistrovaná ako bean v kontexte aplikácie.

Hlavné prípady použitia:

  • Konfigurácia externých knižníc: Keď nie je možné použiť anotácie Spring (@Component, @Service atď.) na triedy z externých knižníc.
  • Jemné nastavenie tvorby beanu: Keď je potrebná zložitá inicializačná logika, ktorá je ťažká alebo nemožná na realizáciu pomocou anotácií.
  • Podmienečné vytváranie beanov: Spolu s anotáciami @Conditional na vytváranie beanov v závislosti od určitých podmienok.

Príklad vytvárania beanu pomocou @Bean:

// V triede označenej s `@Configuration`
@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        // Zložitá logika vytvárania DataSource
        return new com.zaxxer.hikari.HikariDataSource(); // Príklad
    }

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

Bean-y deklarované pomocou @Bean sú dostupné na injekciu (dependency injection) v iných komponentoch Springu. Predvolený názov beanu zodpovedá názvu metódy, ale môže byť explicitne nastavený pomocou atribútov name alebo value.

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