Sobes.tech
Junior

Do czego służy adnotacja @Bean w Spring Framework?

sobes.tech AI

Odpowiedź od AI

Adnotacja @Bean jest używana w Springu do deklarowania metod, które tworzą beany (obiekty zarządzane przez kontener IoC Springa). Metoda oznaczona @Bean jest wywoływana przez Springa, a jej wartość zwracana jest rejestrowana jako bean w kontekście aplikacji.

Główne przypadki użycia:

  • Konfiguracja bibliotek zewnętrznych: Gdy nie można zastosować adnotacji Spring (@Component, @Service itp.) do klas z bibliotek zewnętrznych.
  • Precyzyjne ustawianie tworzenia beana: Gdy wymagana jest złożona logika inicjalizacji obiektu, trudna lub niemożliwa do zrealizowania za pomocą adnotacji.
  • Warunkowe tworzenie beanów: W połączeniu z adnotacjami @Conditional do tworzenia beanów w zależności od określonych warunków.

Przykład tworzenia beana za pomocą @Bean:

// W klasie oznaczonej @Configuration
@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        // Złożona logika tworzenia DataSource
        return new com.zaxxer.hikari.HikariDataSource(); // Przykład
    }

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

Beanów zadeklarowanych za pomocą @Bean można używać do wstrzykiwania zależności (dependency injection) w innych komponentach Springa. Domyślnie nazwa beana odpowiada nazwie metody, ale można ją jawnie ustawić za pomocą atrybutów name lub value.

// Jawne ustawienie nazwy beana
@Bean(name = "myCustomRestTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
    // ...
    return builder.build();
}