通過註解的方式注入依賴對象

@Autowired:注入依賴對象

實現依賴注入,spring容器會對bean中所有字段、方法進行遍歷,標註有@Autowired註解的,都會進行注入

@Autowired標註在字段上面:假定字段類型爲一個自定義的普通的類型,候選者查找過程如下

在這裏插入圖片描述

@Autowired標註在方法上或者方法參數上面:假定參數類型爲爲一個自定義的普通的類型,候選者查找過程如下:

在這裏插入圖片描述

上圖中深色的表示方法注入和字段注入查找過程的不同點。
上圖中展示的是方法中只有一個參數的情況,如果有多個參數,就重複上面的過程,直到找到所有需要注入的參數。

@Autowired查找候選者可以簡化爲
按類型找->通過限定符@Qualifier過濾->@Primary->@Priority->根據名稱找(字段名稱或者方法名稱)

概括爲:先按類型找,然後按名稱找

spring使用下面這個類處理@Autowired註解
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor

@Resource:注入依賴對象

spring容器會對bean中所有字段、方法進行遍歷,標註有@Resource註解的,都會進行注入

@Resource標註在字段上面:假定字段類型爲一個自定義的普通的類型,候選者查找過程如下
在這裏插入圖片描述
@Autowired標註在方法上或者方法參數上面:假定參數類型爲爲一個自定義的普通的類型,候選者查找過程如下:

在這裏插入圖片描述
@Resource查找候選者可以簡化爲
先按Resource的name值作爲bean名稱找->按名稱(字段名稱、方法名稱、set屬性名稱)找->按類型找->通過限定符@Qualifier過濾->@Primary->@Priority->根據名稱找(字段名稱或者方法參數名稱)

概括爲:先按名稱找,然後按類型找

spring使用下面這個類處理@Resource註解
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor

@Qualifier:限定符

可以在依賴注入查找候選者的過程中對候選者進行過濾

@Primary:設置爲主要候選者

注入依賴的過程中,當有多個候選者的時候,可以指定哪個候選者爲主要的候選者

@Bean

方法上標註了@Bean,並且方法中是有參數的,spring調用這個方法創建bean的時候,會將參數中的兩個參數注入進來

泛型注入

public class BaseService<T> {
    @Autowired
    private IDao<T> dao; //@1

    public IDao<T> getDao() {
        return dao;
    }

    public void setDao(IDao<T> dao) {
        this.dao = dao;
    }
}

dao屬性並沒有指定具體需要注入那個bean,此時是根據尖括號中的泛型類型來匹配的

參考

註解的方式注入依賴對象

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章