Sobes.tech
Junior

Spring Framework'te @Bean anotasyonu ne için kullanılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Spring'de @Bean anotasyonu, Spring IoC konteyneri tarafından yönetilen nesneleri (beanleri) üreten metodları bildirmek için kullanılır. @Bean ile işaretlenmiş metod Spring tarafından çalıştırılır ve dönen değer uygulama bağlamında bir bean olarak kaydedilir.

Ana kullanım durumları:

  • Harici kütüphanelerin yapılandırılması: Harici kütüphanelerden gelen sınıflara Spring anotasyonları (@Component, @Service vb.) uygulanamıyorsa.
  • Bean oluşturmanın ince ayarı: Karmaşık nesne başlatma mantığı gerektiğinde, bu mantık anotasyonlarla gerçekleştirilemeyecek veya zor olursa.
  • Koşullu bean oluşturma: @Conditional anotasyonlarıyla birlikte, belirli koşullara bağlı olarak beanler oluşturmak için.

@Bean kullanarak bean oluşturma örneği:

// @Configuration ile işaretlenmiş sınıfta
@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        // Karmaşık DataSource oluşturma mantığı
        return new com.zaxxer.hikari.HikariDataSource(); // Örnek
    }

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

@Bean ile tanımlanan beanler, diğer Spring bileşenlerine bağımlılık enjeksiyonu (dependency injection) için kullanılabilir. Varsayılan olarak, bean ismi metodun adıyla aynıdır, ancak name veya value öznitelikleri kullanılarak açıkça ayarlanabilir.

// Bean isminin açıkça belirlenmesi
@Bean(name = "myCustomRestTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
    // ...
    return builder.build();
}