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.

1- NewsPaperService
2- PaperService

Yukarıdaki servislerde görüldüğü gibi bu servisler üretim aşamasında IPrinter isimli interface sayesinde yazım işlerini tamamlamaktadır.

3- PaperController

PaperController tarafında printer özelliği Autowired edilmeye çalışıldığında “NoUniqueBeanDefinitionException” hatası ile karşılaşılacaktır.

4- NoUniqueBeanDefinitionException

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.

5- PaperController “@Qualifier” Notasyonu
6- PaperService unique name eklenmesi

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.

--

--

Zahit Ziya GÜREL
Zahit Ziya GÜREL

Written by Zahit Ziya GÜREL

Full Stack Java Developer at Turkcell

No responses yet