Spring DI依賴注入的三種方式

2021-10-23 13:52:00 字數 3210 閱讀 1598

從字面上分析:

ioc:指將物件的建立權,反轉給了spring容器;

di :指spring建立物件的過程中,將物件依賴屬性(簡單值,集合,物件)通過配置設值給該物件。

ioc和di其實是同乙個概念的不同角度描述,di相對ioc而言,明確描述了「被注入物件依賴ioc容器配置依賴物件」。

所謂的依賴注入,就是屬性不建立物件,通過配置檔案的配置將spring容器裡面的物件注入給對應的屬性

使用setter注入:

1,使用bean元素的子元素設定;

1,簡單型別值,直接使用value賦值;

2,引用型別,使用ref賦值;

3,集合型別,直接使用對應的集合型別元素即可。

2,spring通過屬性的setter方法注入值;

3,在配置檔案中配置的值都是string,spring可以自動的完成型別的轉換

<?xml version=

"1.0" encoding=

"utf-8"?>

""xmlns:xsi=

""xsi:schemalocation=

"/spring-beans.xsd"

>

<

!-- 員工 -->

"employee" class=

"cn.zj.spring.pojo.employee"

>

<

!-- setter方法注入: 屬性注入

"" value=

"">

name : 屬性名稱

value : 基本資料型別+string型別的值注入

ref : 引用型別(物件型別)的注入

value 和ref 只能二選一

-->

"age" value=

"18"

>

"name" value=

"jinken"

>

"dept" ref=

"dept"

>

<

!-- 部門 -->

"dept" class=

"cn.zj.spring.pojo.department"

>

<

!--

1,預設情況下,constructor-arg的順序就是構造器引數的順序

2,3中調整構造器順序:

1.index:在構造器中的引數索引(從0開始)

2.type:在構造器中的引數的型別

3.name:在構造器中按照構造器的引數名字設定值

======

====

====

====

== 使用哪種注入方式比較好(setter?構造器?)?

1,如果乙個類必須依賴另乙個類才能正常執行,用構造器;

2,但是構造器的引數如果過多,構造器很難看;--測試引數不能少,否則報錯20191221

3,更多的還是使用setter注入;

4,可以使用@required標籤來要求乙個屬性必須注入

-->

<

!-- 員工 -->

"employee" class=

"cn.zj.spring.pojo.employee"

>

<

!-- constructor注入 -->

"1" value=

"喬峰"/>

"0" value=

"19"/>

"dept"/>

<

!-- 部門 -->

"dept" class=

"cn.zj.spring.pojo.department"

>

3.p命名空間

使用p命名空間注入先在約束上面引入 p標籤(紅色部分)

<?xml version=

"1.0" encoding=

"utf-8"?>

""xmlns:p=

""xmlns:xsi=

""xsi:schemalocation=

"/spring-beans.xsd"

>

<

!-- 配置部門 -->

"department" class=

"cn.zj.spring.pojo.department"

p:id=

"123"

p:name=

"銷售部"/>

<

!-- 配置員工 -->

"emp" class=

"cn.zj.spring.pojo.employee"

p:id=

"111"

p:name=

"西門吹雪"

p:dept-ref=

"department"/>

在這裡插入**片
public class collectionbean 

"collectionbean" class=

"cn.gzxst.spring.pojo.collectionbean"

>

<

!-- set集合注入 -->

"set"

>

set1

set2

set3

<

!-- list集合注入 -->

"list"

>

list1

list2

list3

<

!-- 陣列注入 -->

"array"

>

aabb

cc<

!-- map集合注入 -->

"map"

>

"key1" value=

"喬峰"/>

"key2" value=

"虛竹"/>

"key3" value=

"段譽"/>

<

!-- properties注入 -->

"prop"

>

"pro1"

>provlaue1

"pro2"

>provlaue2

"pro3"

>provlaue3

Spring DI三種依賴注入

1.賦值 name為屬性名,value為屬性值 這種方法的依賴注入,底層呼叫的方法是set方法 2.構造器注入 構造方法 在相應的類中需要新增構造方法 如果賦值的資料的8中簡單的型別,使用value,如果是應用型別 除了string 使用ref value屬性值,index為索引對應建構函式中的第幾...

Spring DI 依賴注入

實體類computer mobilephone student public class computer implements serializable public void setmainboard string mainboard public string gethdd public vo...

Spring DI依賴注入

1 spring建立的bean預設是singleton模式,會以非懶載入的方式載入,即在ioc容器初始化時,容器呼叫getbean 方法,對bean進行例項化,同時觸發依賴注入。2 如果指定bean為prototype模式,會以懶載入的方式載入,在使用者第一次呼叫getbean 方法時觸發依賴注入。...