Notasyonlar
@Qualifier Annotation
Spring uygulamalarında autowired işlemleri sırasında karşılaşabileceğimiz “NoUniqueBeanDefinitionException” hatası gibi bir takım senaryoyu canlandırmak istedim.
Bir kağıt fabrikasında, PaperService ve NewsPaperService isimli iki tane servis hali hazırda kullanılmaktadır.
Yukarıdaki servislerde görüldüğü gibi bu servisler üretim aşamasında IPrinter isimli interface sayesinde yazım işlerini tamamlamaktadır.
PaperController tarafında printer özelliği Autowired edilmeye çalışıldığında “NoUniqueBeanDefinitionException” hatası ile karşılaşılacaktır.
Bu hatanın sebebi hem Newspaper hemde Paper için ortak printer vardır. Spring hangi Bean’in enjekte edeceğini bilememesinden kaynaklıdır. Hatanın çözümü için “@Qualifier” notasyonu kullanılır. Bu notasyon sayesinde enjekte edilecek bean unique olacak şekilde isimlendirilir.
Sonuç olarak:
Öncelikle servis notasyonlara unique isimlendirilmesi yapılır ve papercontroller tarafında enjekte ederken aynı zamanda “@Qualifier” notasyonu ile önceden isimlendirdiğimiz ve çağırmak istediğimiz servisin adı yazılır.