Junior
Zašto se koristi anotacija @Bean u Spring Framework-u?
sobes.tech АИ
Одговор од АИ
Анотација @Bean се користи у Spring-у за проглашавање метода који производе bean-ове (објекте који управља IoC контејнер Spring-а). Метод означен са @Bean се извршава од стране Spring-а, а његова вредност се региструје као bean у контексту апликације.
Главни случајеви употребе:
- Конфигурација спољашњих библиотека: Када није могуће применити Spring анотације (@Component, @Service итд.) на класе спољашњих библиотека.
- Детаљна конфигурација креирања bean-а: Када је потребна сложена логика иницијализације објекта, тешко или немогуће реализовати помоћу анотација.
- Условно креирање bean-ова: Заједно са
@Conditionalанотацијама за креирање bean-ова у зависности од одређених услова.
Пример креирања bean-а помоћу @Bean:
// У класи означеној са `@Configuration`
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
// Сложна логика креирања DataSource
return new com.zaxxer.hikari.HikariDataSource(); // Пример
}
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
// Конфигурација RestTemplate
return builder.setConnectTimeout(Duration.ofSeconds(5))
.setReadTimeout(Duration.ofSeconds(5))
.build();
}
}
Bean-ови који су објављени помоћу @Bean доступни су за убризгавање (dependency injection) у друге Spring компоненте. По подразумевану вредност, име bean-а одговара имену методе, али се може експлицитно поставити помоћу атрибута name или value.
// Јасно постављање имена bean-а
@Bean(name = "myCustomRestTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
// ...
return builder.build();
}