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
@Conditionaldo 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();
}