spring的五種自動裝配方式

2021-09-28 22:04:38 字數 1489 閱讀 7885

當spring裝配bean屬性時,有時候非常明確,就是需要將某個bean的引用裝配給指定屬性。

先寫兩個類

public class userservcie 

public void setuserdao(userdao userdao)

public userdao getuserdao()

}public class userdao

例如:在userservcie中注入userdao需要顯式的手動裝配

這種寫法會是開發效率變慢。

因此出現了spring的自動裝配方式:五種自動裝配方式 no、byname、bytype、constructor、default。

1、no:當使用autowire="no"時,不使用自動裝配,依然需要手動裝配,需要顯式指定某個bean的引用。

2、byname:使用autowire="byname"裝配方式時,就是使用名字裝配,不需要顯式指定某個bean的引用,此時使用的是setter方式注入。此時要注意需要被注入的bean的id和注入的bean的屬性名之間的匹配,否則失敗注入不成功。

例如:userservice中需要注入userdao, private userdao userdao,當byname注入時,spring會在ioc容器中尋找id="userdao"的物件,找到注入成功,找不到注入失敗。

public class userservcie 

public void setuserdao(userdao userdao)

public userdao getuserdao()

}

此時的配置檔案為

3、bytype:使用autowire="bytype"裝配方式時,就是使用型別裝配,不需要顯式指定某個bean的引用,此時使用的是setter方式注入。此時需要注意ioc容器中不允許出現同乙個型別的兩個及以上個數量的例項,否則失敗報異常。

此時的配置檔案為

4、constructor :使用autowire="constructor "裝配方式時,預設也是使用bytype方式裝配,只是不同的是按照構造器引數的型別進行裝配,構造器方式注入。

5、default: 使用autowire="default"裝配方式時,是使用父級標籤的預設裝配方式,我們這裡也就是指的父級標籤的預設裝配方式進行裝配。例如:

這裡beans標籤使用的是bytype方式,對於userservice1 使用的autowire="default",就會使用beans的bytype方式裝配,而 userservice1的autowire="byname"則會使用byname裝配。

Spring中bean的五種自動裝配方式

spring 裝配包括手動裝配和自動裝配,手動裝配是有基於 xml 裝配 構造方法 setter 方法等自動裝配有五種自動裝配的方式,可以用來指導 spring 容器用自動裝配方式來進行依賴注入。五種 no 預設的方式是不進行自動裝配,通過顯式設定 ref 屬性來進行裝配。byname 通過引數名 ...

Spring裝配方式

裝配方式還是spring的ioc的內容,我們之前學會了用spring例項化物件了,可是還不夠,因為我們工程裡還有大量的工具類,這種用我們之前的知識例項化會很麻煩。舉個例子,我們正常的乙個資料新增需要在dbutil裡進行與資料庫的連線,之前我們要被daoimpl實現dao類用來實現資料新增的方法呼叫,...

Spring中Bean的裝配方式

bean的裝配可以理解為di,也就是bean依賴注入的方式。下面對常見的三種方式進行總結。要滿足兩個要求 一是bean類必須提供乙個預設的無參建構函式,二是bean類必須為需要注入的屬性提供相應的setter方法。使用的是元素的子元素為屬性注入值。提供乙個帶參的建構函式。使用的是元素的子元素為屬性注...