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