Spring 四 自動裝配

2022-09-08 03:30:13 字數 1820 閱讀 3467

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...