Giriş
Autowired sadece arayüzler için kullanılır.
@Qualifier
Elimizde şöyle bir xml olsun. ClassA1 sınıfı ClassA arayüzünden kalıtıyor olsun.
Parametrede kullanılan isim qualifier olarak kullanılır. Elimizde şu kalıtım hiyerarşisi olsun.
Autowired sadece arayüzler için kullanılır.
@Qualifier
Elimizde şöyle bir xml olsun. ClassA1 sınıfı ClassA arayüzünden kalıtıyor olsun.
<bean id="class1" class="com.abc.ClassA1" />
Autowired bir arayüz ile kullanıldığı için, hangi gerçekleştirimi istediğimizi belirtmek için şöyle yaparız.@Autowired
@Qualifier("class1")
ClassA classA1;
@Qualifier yoksa
Parametrede kullanılan isim qualifier olarak kullanılır. Elimizde şu kalıtım hiyerarşisi olsun.
interface Country {}
class USA implements Country {}
class UK implements Country ()
XML şöyle olsun<bean class="USA"/>
<bean id="country" class="UK"/>
<bean id="main" class="Main"/>
Kod şöyle olsun.class Main {
private Country country;
@Autowired
public void setCountry(Country country) {
this.country = country;
}
}
Bu durumda USA veya UK bean'lerinden USA olanı seçilir. Çünkü parametre olan country ile bean ismi eşleşir. Açıklaması şöyleFor a fallback match, the bean name is considered a default qualifier value.
Hiç yorum yok:
Yorum Gönder