SPRING BEAN的4種依賴注入方式

2021-10-14 07:09:09 字數 1327 閱讀 4370

** 所謂依賴注入,其實就是給物件裡的屬性賦值,因為物件裡有其他物件,因此就形成了依賴。spring有4種方式來給屬性賦值:**

1. 構造方法注入

2. set方法注入

3. 自動裝配

4. 註解

構造方法注入是指在構造方法中注入屬性或者物件來實現依賴注入,如下所示,在標籤中定義乙個id為userdaoimpl的bean,並通過注入了name為username,value為admin的值,注入完成後直接通過this.username獲取到值admin。其中引用型別使用ref屬性,基本型別使用value屬性。

public class userdaoimpl xml**

set方法注入就是通過在類中實現get、set方法來實現屬性或者物件的依賴注入,如下所示,在標籤中定義乙個id為userdaoimpl的bean,並通過注入了name為username,value為admin的值,注入完成後直接通過getusername()獲取到值admin。

public class userdaoimpl

public void setusername(string username) xml**

spring提供了自動裝配的功能,簡化了我們的配置,自動裝配預設是不開啟的,常用的方式有兩種:

byname:通過引數名自動裝配,如下所示,id為userservice的的autowire被設定為byname後,ioc容器會通過名字來自動裝配,發現userservice類中有個叫userdao的屬性,然後看看ioc容器中有沒有id為userdao的,如果有就裝配進去。

bytype:通過引數型別自動裝配,當autowire被設定為bytype後,ioc容器會看看裡面有沒有userdao型別的,有就裝配進去。

@autowired註解可以實現自動裝配,只要在對應的屬性上標記該註解,但是@autowired註解只按照bytype注入。

public class usercontroller {

@autowired

private iuserservice userservice;

@resource註解可以實現自動裝配,它有兩個重要屬性name和type,name屬性解析為bean的名字,type屬性則解析為bean的型別。所以如果使用name屬性,則使用byname的自動注入策略,而使用type屬性則使用bytype自動注入策略。如果既不指定name也不指定type屬性,這時將通過反射機制使用byname自動注入策略。

@autowired註解和@resource註解的作用相同,只不過@autowired按照bytype注入,如果@autowired想使用名稱可以結合@qualifier註解進行使用

Spring bean的迴圈依賴問題

傳送門 通過迴圈依賴問題徹底理解 spring ioc 的精華 迴圈依賴其實就是迴圈引用,也就是兩個或則兩個以上的bean互相持有對方,最終形成閉環。比如a依賴於b,b依賴於c,c又依賴於a。spring 中的迴圈依賴有構造器迴圈依賴和setter迴圈依賴。spring容器會將當前正在建立的bean...

Spring bean 繼承與依賴

spring 允許繼承 bean 的配置,被繼承的 bean 稱為父 bean.繼承這個父 bean 的 bean 稱為子 bean 子 bean 從父 bean 中繼承配置,包括 bean 的屬性配置 子 bean 也可以覆蓋從父 bean 繼承過來的配置 父 bean 可以作為配置模板,也可以作...

spring依賴注入的4種方式

一 set注入 必須要有setter方法 public class userdao package com.yao.service import com.yao.pojo.userdao public class userservice public void test userdao class ...