@autowired和@resource的區別
@resource的作用相當於@autowired,只不過@autowired按bytype自動注入,而@resource預設按 byname自動注入罷了。@resource有兩個屬性是比較重要的,分是name和type,spring將@resource註解的name屬性解析為bean的名字,而type屬性則解析為bean的型別。所以如果使用name屬性,則使用byname的自動注入策略,而使用type屬性時則使用bytype自動注入策略。如果既不指定name也不指定type屬性,這時將通過反射機制使用byname自動注入策略。
@resource裝配順序
1. 如果同時指定了name和type,則從spring上下文中找到唯一匹配的bean進行裝配,找不到則丟擲異常
2. 如果指定了name,則從上下文中查詢名稱(id)匹配的bean進行裝配,找不到則丟擲異常
3. 如果指定了type,則從上下文中找到型別匹配的唯一bean進行裝配,找不到或者找到多個,都會丟擲異常
4. 如果既沒有指定name,又沒有指定type,則自動按照byname方式進行裝配;如果沒有匹配,則回退為乙個原始型別進行匹配,如果匹配則自動裝配;
@resource
例如@resource
private datasource datasource; // inject the bean named 'datasource'
或者@resource(name="datasource")
@resource(type=datasource.class)
說明@resource 預設按bean 的name 進行查詢,如果沒有找到會按type 進行查詢.
@component 元件不好歸類用這個,對應id
自己總結的Spring註解式依賴注入規則
根據多次反覆試驗,目前看起來注入規則如下,小夥伴們如果發現有不正確的,歡迎指出 spring 版本 4.3.2realease 前提 只有手動指定過name的bean才能通過byname方式找到 extends和implements也算type匹配 步驟如下 如果 resource沒有指定name,...
Spring註解 Import註解
常用的匯入註解分類 註冊自己寫的類service dao controller可用包掃瞄 元件標註註解 controller service repository component bean 匯入的第三方包裡面的元件 import 快速給容器中匯入乙個元件 1 import 要匯入到容器中的元件 ...
spring 基於註解的spring配置
spring是乙個基於ioc和aop的結構j2ee系統的框架 ioc 反轉控制 是spring的基礎,inversion of control 簡單說就是建立物件由以前的程式設計師自己new 構造方法來呼叫,變成了交由spring建立物件 di 依賴注入 dependency inject.簡單地說...