autowire自動裝配

2021-09-29 08:45:50 字數 1500 閱讀 9562

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