天天看點

Spring依賴注入的兩種方式(根據執行個體詳解)

1,set注入    2,構造注入

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

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

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

定義car類:

定義person類:

測試類:

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

person [name=張三, age=11, car=car [name=奔馳, color=土豪金, clas=進階轎車]]

原理:通過構造函數完成依賴關系的設定

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

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

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

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

demo的大體結構:

Spring依賴注入的兩種方式(根據執行個體詳解)

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

使用構造注入可以在建構對象的同時完成依賴關系到的建立,是以如果要建立的對象的關系很多,使用構造注入會在構造方法上留下很多參數,可讀性極差,是以當對象的關系比較多的時候采用set方法注入。

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

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