Spring中利用@Qualifier()來進行注入bean。

一般來說在spring框架中利用@Autowired和@resource來進行實體bean的注入,但是同時也可以利用@Qualifier(“value”)來進行注入我們可以觀察下面代碼:

//定義亞洲人
@Qualifier("Asian")
@Component
public class AsianMan extends Person {
 
}
 
········
 
//定義歐洲人
@Qualifier("Europe")
@Component
public class EuropeMan extends Person {
 
}

在引用的時候:

public class Controller {
 
    @Qualifier("Asian")      //指定注入的是Asain的bean
    @Autowired
    private Person person;
 
}

可以利用@Qualifier(“value”)中的值來進行一個書寫,來確定注入的bean元素。
具體的使用的原因:

  1. bean已有id,爲什麼還用@Qualifier?
    上面的例子,我們可以把兩個bean的id分別設爲“Asian“、”Europe“,然後用@Resource(name="***")也同樣能實現相關功能,那爲什麼還要用@Qualifier?

    個人理解@Qualifier是個修飾詞,不需要bean_id不可重複那麼嚴格,比較靈活。那麼就可以把其中的參數作爲一種修飾,作爲bean的形容詞來進行更細緻的描述。在《Spring實戰》書中,舉例是類IceCream(冰淇淋)和Dessert(甜點)都用@Qualifier(”cold“)來修飾,意思是涼的冰淇淋和甜點。
    
    因此使用@Qualifier,更加靈活,也更符合面向對象的思想。
    
  2. @Qualifier加在註解上
    上面的例子中,可以看到是使用@Qualifier()中value的參數來篩選bean的,本文給此參數起個名字,叫做修飾語。修飾語是字符串類型,可以設置各種值。

    如果一個工程的修飾語種類特別多,或者修飾語語義之間有繼承等類似複雜關係,或者需要用多個修飾語修飾同一個bean,那用這種直接的方式就不太好操作了。修飾語value字符串容易拼錯,容易混淆,更不容易被編輯器檢測出來,調試bug困難。
    
    因此可以自定義一個新的註解,使用@Qualifier修飾,製作自己的修飾語註解
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章