bean自動裝配
spring裝配機制:
自動裝配:
元件掃瞄(component scanning):spring會自動發現應用上下文中所建立的bean;
自動裝配(autowiring):spring自動滿足bean之間的依賴(ioc/di)
實體類
//貓
public class cat
}//狗
public class dog
}//使用者
public class user
2.配置
<?xml version="1.0" encoding="utf-8"?>
實現
public class mytest
}
背景:由於在手動配置xml過程中,常常發生字母缺漏和大小寫等錯誤,而無法對其進行檢查,使得開發效率降低。採用自動裝配將避免這些錯誤,並且使配置簡單化。
當乙個bean節點帶有 autowire byname的屬性時。
將查詢其類中所有的set方法名,例如setcat,獲得將set去掉並且首字母小寫的字串,即cat
spring容器中尋找是否有此字串名稱id的物件。
保證:同一型別的物件,在spring容器中唯一,如果不唯一,會報不唯一的異常。nouniquebeandefinitionexception
在spring配置檔案中引入context檔案頭
xmlns:context=""
/spring-context.xsd
開啟屬性註解支援
@autowired是根據型別自動裝配的,加上@qualifier則可以根據byname的方式自動裝配
@qualifier不能單獨使用。
@autowired
@qualifier(value = "cat2")
private cat cat;
@autowired
@qualifier(value = "dog2")
private dog dog;
@resource如有指定的name屬性,先按該屬性進行byname方式查詢裝配;
其次再進行預設的byname方式進行裝配;
如果以上都不成功,則按bytype的方式自動裝配。
都不成功,則報異常。
@autowired與@resource都可以用來裝配bean,都可以寫在字段上,或寫在setter方法上
autowired預設按型別裝配(屬於spring規範),預設情況下必須要求依賴物件必須存在,如果要允許null 值,可以設定它的required屬性為false,如果我們想使用名稱裝配可以結合@qualifier註解進行使用
resource(屬於j2ee復返),預設按照名稱進行裝配,名稱可以通過name屬性進行指定。如果沒有指定name屬性,當註解寫在字段上時,預設取欄位名進行按照名稱查詢
如果註解寫在setter方法上預設取屬性名進行裝配
找不到與名稱匹配的bean時才按照型別進行裝配。但是需要注意的是,如果name屬性一旦指定,就只會按照名稱進行裝配。
執行順序不同。@autowired先bytype,@resource先byname。
Spring 學習 四 自動裝配
spring 可以自動裝配,只要設定需要自動裝配的中的autowire 屬性。如 有四種自動裝配型別 byname 試圖在容器中尋找和需要自動裝配的屬性名相同的bean 或id 如果沒有找到相符的bean,這個屬性就沒有被裝配上。bytype 試圖在容器中尋找乙個與需要自動裝配的屬性型別相同的bea...
spring框架學習(四)自動裝配
spring框架學習 四 自動裝配 set注入和構造注入有時在做配置時比較麻煩。所以框架為了提高開發效率,提供自動裝配功能,簡化配置。spring框架式預設不支援自動裝配的,要想使用自動裝配需要修改spring配置檔案中標籤的autowire屬性 自動裝配屬性有6個值可選,分別代表不同的含義。1,b...
Spring自動裝配
先在cn.csdn.hr.dao包中建立幾個檔案 public inte ce basedao public class basehibernatedaoimpl implements basedao public inte ce customerdao public class customerd...