@Qualifier
anotasyonu, Spring Framework'de bağımlılık enjeksiyonunu (dependency injection) özelleştirmek için kullanılır. Spring, bir sınıfın bağımlılıklarını otomatik olarak enjekte etmek için @Autowired
anotasyonunu kullanır. Ancak, aynı türden birden fazla bean (nesne) varsa, Spring hangi bean'in enjekte edileceğini bilemez ve bu durumda @Qualifier
kullanılır. @Qualifier
, hangi bean'in enjekte edileceğini belirlemek için kullanılır.
@Qualifier Kullanımı
- Tanımlama: İlk olarak, birden fazla bean oluşturulmalıdır. Her biri farklı bir isimle tanımlanır.
@Configuration
public class AppConfig {
@Bean
public Vehicle car() {
return new Car();
}
@Bean
public Vehicle bike() {
return new Bike();
}
}
-
Enjeksiyon: Daha sonra,
@Autowired
ile birlikte@Qualifier
kullanarak belirli bir bean'i enjekte edebilirsiniz.
public class VehicleService {
private final Vehicle vehicle;
@Autowired
public VehicleService(@Qualifier("car") Vehicle vehicle) {
this.vehicle = vehicle;
}
public void service() {
vehicle.drive();
}
}
Bu örnekte, VehicleService
sınıfı içinde car
bean'i enjekte edilir. Eğer @Qualifier
kullanılmazsa ve birden fazla Vehicle
türünde bean varsa, Spring bir çakışma hatası verir.
@Qualifier'ın Avantajları
- Netlik: Hangi bean'in enjekte edileceği açıkça belirtilir.
- Çakışma Önleme: Aynı türden birden fazla bean olduğunda, çakışmaları önler.
- Kontrol: Geliştiriciye daha fazla kontrol sağlar ve hangi bean'in kullanıldığını belirtmek için esneklik sunar.
Özet
@Qualifier
anotasyonu, Spring'de bağımlılık enjeksiyonunu özelleştirmek ve belirli bean'leri seçmek için kullanılır. @Autowired
anotasyonu ile birlikte kullanıldığında, aynı türden birden fazla bean olduğunda hangi bean'in enjekte edileceğini açıkça belirler. Bu, çakışmaları önler ve kodun daha okunabilir ve bakımı daha kolay olmasını sağlar.