autowire自動裝配
auto自動裝配就是在要使用bean的時候進行自動注入
!注意!:自動注入只能注入引用資料型別和自定義類,其中基礎資料型別和string資料型別不能自動注入,自動注入也沒有意義,會報錯。
解釋:
我們自動注入注入的是有效的屬性值,針對自定義類,只能注入例項,那注入的就是乙個例項,這是有意義的;
而對基礎資料型別和string,編譯器不知道要注入什麼確切的值(比如int行可以是1、2、3、4…)沒告訴編譯器具體的值,注入無意義。
基礎語法
''id_name" class = "class_name" autowire = "bytype"/
>
''id_name" class = "class_name" autowire = "byname"/
>
bytype:按型別匹配
根據屬性的型別,在容器中找到與此型別匹配的bean,找不到就為null;
如果發現多個匹配的bean,就會報錯;如:類c、類d均implements了介面類b;在類a中例項介面b的實現類;此時編譯器就無法判斷要注入哪個類(c還是d),就會報錯。
//在.xml檔案中設定自動裝配及自動裝配型別
''id_name" class = "class_name" autowire = "bytype"/
>
/*以下是乙個正確的例子;
定義了乙個類a:userservice,其中呼叫了類b:userdao*/
public
class
userservice
}
/*以下是乙個錯誤的例子
類c(iphone)、類d(honorphone)均implements了介面類b(nfc);
在類a (userservice) 中例項介面b(nfc)的實現類;
此時編譯器就無法判斷要注入哪個類(c還是d),此時,就會報錯。*/
//類d(honorphone)implements了介面類b(nfc);
public honorphone implements
nfc//類c(iphone)implements了介面類b(nfc);
public iphone implements
nfcpublic
class
userservice
}
byname:按名稱匹配
使用方法與bytype基本一樣,但與bytype最大的區別是:byname不會報錯,要麼找到便匹配成功;要麼找不到就給null;這就可以解決bytype中對乙個介面多實現後例項其實現類的衝突問題,因為可以使用名稱確定唯一的bean名。
注意bytype、byname只能選擇乙個使用
侷限:autowire的自動裝配不具有選擇性,要麼全部裝配,要麼全部不裝配。
自動裝配(Autowire)
了解 自動裝配 autowire 自動裝配表現為不需要配置 節點來注入,spring會自動的為屬性注入值!在 節點中新增 autowire 屬性以配置自動裝配。重要 當取值為 byname 時,表示 根據名稱 自動裝配,即spring會檢查這個bean的所有的屬性名稱,然後在spring管理的所有b...
4 自動裝配(autowire)
自動裝配bean的屬性值 模式說明 no byname 根據屬性名自動裝配。此選項將檢查容器並根據名字查詢與屬性完全一致的bean,並將其與屬性自動裝配。例如,在bean定義中將autowire設定為by name,而該bean包含master 屬性 同時提供setmaster 方法 spring就...
Spring自動裝配
先在cn.csdn.hr.dao包中建立幾個檔案 public inte ce basedao public class basehibernatedaoimpl implements basedao public inte ce customerdao public class customerd...