Spring依賴注入的兩種方式(根據例項詳解)

2021-09-23 15:13:10 字數 2663 閱讀 8632

1,set注入    2,構造注入

原理:通過類的setter方法完成依賴關係的設定

name屬性的取值依setter方法名而定,要求這個類裡面這個對應的屬性必須有setter方法。

set方法注入時spring中配置檔案:

<?xml version="1.0" encoding="utf-8"?>

土豪金

定義car類:

package org.spring01;

public class car

public void setname(string name)

public string getcolor()

public void setcolor(string color)

public string getclas()

public void setclas(string clas)

public car(string name, string color, string clas)

public car()

@override

public string tostring() }

定義person類:

package org.spring01;

public class person

public void setname(string name)

public int getage()

public void setage(int age)

public car getcar()

public void setcar(car car)

public person(string name, int age, car car)

public person()

@override

public string tostring() }

測試類:

package org.spring01;

import org.junit.test;

public class springtest

@test

public void togetcar()

}

使用單元測試(junit)測試togetperson()方法,結果為:

person [name=張三, age=11, car=car [name=賓士, color=土豪金, clas=高階轎車]]

原理:通過建構函式完成依賴關係的設定

構造注入指的是在接受注入的類中,定義乙個構造方法,並在構造方法的引數中定義需要注入的元素,其中,index表示構造方法中的引數索引(第乙個引數索引為0)。

構造方法注入時spring中配置檔案:

<?xml version="1.0" encoding="utf-8"?>

白色

定義car類:

package org.spring02;

public class car

public car()

@override

public string tostring() }

定義person類:

package org.spring02;

public class person

public person()

@override

public string tostring() }

測試類:

package org.spring02;

import org.junit.test;

public class springtest

@test

public void togetcar()

}

使用單元測試(junit)測試togetperson()方法,結果為:

person [name=李四, age=23, car=car [name=大眾, color=白色, clas=中級轎車]]

上面的例子都採用了單元測試的方法檢測執行結果,需要導庫: junit

demo的大體結構:

我們可以看到,set方法和構造方法都可以設值成功, 實際開發中最常用到的是set方法設值。但這兩種依賴注入的方式並沒有絕對的好壞,只是使用的場合不同。

使用構造注入可以在構建物件的同時完成依賴關係到的建立,所以如果要建立的物件的關係很多,使用構造注入會在構造方法上留下很多引數,可讀性極差,所以當物件的關係比較多的時候採用set方法注入。

使用set方法注入是通過類的setter方法完成依賴關係的設定的,所以不能保證相關的資料在執行時不被更改設定。所以如果想使一些資料變為唯讀或者私有,就要採用構造注入了。

建議採用以set注入為主,構造注入為輔的注入策略。對於依賴關係無須變化的注入,盡量採用構造注入;而其他的依賴關係的注入,則考慮採用set注入。

常見Spring依賴注入的兩種方式

設定注入 ioc容器使用屬性的setter方法來注入被依賴的例項。構造注入 ioc容器使用構造器來注入被依賴的例項。兩種方法的 比較 設定注入 private string name private string password private void setname string name 同...

Spring依賴注入常用的兩種方式

spring中依賴注入 定義物件之間的彼此依賴,常用的兩種注入方式 setter方法和構造器 1 setter方法 在容器中宣告變數並插入對應setter和getter方法,在對應xml文件中配置,片段 public class animalser public void setcat cat ca...

Spring兩種依賴注入方式的比較

我們知道,spring物件屬性的注入方式有兩種 設值注入和構造注入。先看 假設有個類為people,該物件包含三個屬性,name和school還有age,這些屬性都有各自的setter和getter方法,還有乙個包含這三個屬性的構造方法。如果用spring來管理這個物件,那麼有以下兩種方式為peop...