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:
@Conditionalanotasyonları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();
}