DEV Community

Mustafa  Çam
Mustafa Çam

Posted on

@Qualifier

@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ı

  1. 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();
    }
}
Enter fullscreen mode Exit fullscreen mode
  1. 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();
    }
}
Enter fullscreen mode Exit fullscreen mode

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.

Top comments (0)