Sobes.tech
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();
}