Sobes.tech
Junior

Spring Frameworkda @Bean anotatsiyasi nima uchun ishlatiladi?

sobes.tech AI

AIdan javob

Spring'da @Bean anotasyonu, Spring IoC konteyneri tomonidan boshqariladigan obyektlar (beanlar) ishlab chiqaradigan metodlarni e'lon qilish uchun ishlatiladi. @Bean bilan belgilangan metod Spring tomonidan bajariladi va uning qaytargan qiymati ilova kontekstida bean sifatida ro'yxatga olinadi.

Asosiy foydalanish hollari:

  • Tashqi kutubxonalarni sozlash: Tashqi kutubxonalar sinflariga Spring anotatsiyalari (@Component, @Service va boshqalar)ni qo'llash mumkin bo'lmagan hollarda.
  • Bean yaratishning nozik sozlamasi: Murakkab boshlang'ich logika talab qilinadigan hollarda, bu logika anotatsiyalar yordamida amalga oshirilishi qiyin yoki imkonsiz bo'lsa.
  • Shartli bean yaratish: @Conditional anotatsiyalari bilan birga, ma'lum shartlarga bog'liq holda beanlar yaratish uchun.

@Bean yordamida bean yaratish misoli:

// @Configuration bilan belgilangan sinfda
@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        // Murakkab DataSource yaratish logikasi
        return new com.zaxxer.hikari.HikariDataSource(); // Misol
    }

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

@Bean bilan e'lon qilingan beanlar Springning boshqa komponentlariga in'ektsiya (dependency injection) uchun mavjud. Standart holda, bean nomi metod nomiga mos keladi, lekin uni name yoki value atributlari yordamida aniq belgilash mumkin.

// Bean nomini aniq belgilash
@Bean(name = "myCustomRestTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
    // ...
    return builder.build();
}