- 名師講壇:Spring實戰開發(Redis+SpringDataJPA+SpringMVC+SpringSecurity)
- 李興華
- 1296字
- 2020-04-24 14:20:44
3.3 注入集合對象
集合是Java項目開發中的重要組成部分,Spring中也支持常用集合類型的注入,包括數組(等價于List集合)、Set集合、Map集合和Properties集合。
3.3.1 注入數組對象
數組是一種固定的線性存儲集合,Spring中將數組與List集合進行了統一,即配置數組時使用<list>或<array>元素描述,最終的效果是完全相同的。
1.【mldnspring-base項目】修改Dept.java程序類,追加數組屬性。

本類中一共可以注入兩個數組:部門信息(infos)和部門員工(List)。
2.【mldnspring-base項目】修改spring-base.xml配置文件,追加數組配置。

本程序定義了兩個Emp對象,而后將這兩個對象直接注入到了Dept對象之中(List集合)。
提示:<list>與<array>元素可以互換。
通過以上配置可以發現,infos為數組,所以使用<array>元素描述;emps為List集合,所以使用<list>元素描述。Spring中,這兩者之間是可以互相替換的。
范例:修改配置。

本程序中,infos使用了<list>元素,emps使用了<array>元素,雖然標記元素不同,但Spring會自動幫助用戶進行處理。
3.【mldnspring-base項目】編寫TestDept程序類,測試數組對象注入。

本程序在測試類中啟動了Spring容器,并且注入了Dept對象,由于該對象之中infos屬于數組,所以可以直接使用Arrays.toString()進行輸出。對于List集合,則可以直接利用Lambda表達式結合forEach方法輸出。
提示:List實例化子類。
通過如上配置可以發現,在Bean配置中如果使用<list>或<array>元素進行數組或集合注入,會自動進行List集合實例化。在測試類中,可以通過如下代碼測試Spring使用的List子類:

程序執行后返回的是class java.util.ArrayList子類。之所以使用ArrayList,是因為進行配置文件定義時,配置項的元素個數是固定的,使用ArrayList作為默認List實例化子類更加合理。
3.3.2 注入Set集合
Set集合的最大特征是不允許存在重復內容。另外,Spring中為了保證數據的存儲順序,默認使用LinkedHashSet子類實例化Set集合。
1.【mldnspring-base項目】修改Dept程序類,追加Set集合屬性。

2.【mldnspring-base項目】編輯spring-base.xml配置文件,追加部門配置。

由于需要注入的是Set集合,所以使用了<set>元素。另外,為了體現Set集合不保存重復數據這一特點,這里特意設置了兩項相同的內容。
3.【mldnspring-base項目】編寫測試類。

執行程序可以發現,Set集合并沒有保存重復的內容;另外,Set集合中各內容的順序就是其配置文件定義的順序。
3.3.3 注入Map集合
Map集合注入的時候需要通過<map>元素進行配置,配置時需要設置元素的key與value。同時,為了保證集合保存順序,默認會使用LinkedHashMap子類。
1.【mldnspring-base項目】修改Dept.java類,追加Map集合屬性。

2.【mldnspring-base項目】編輯spring-base.xml配置文件,注入Map集合。

本程序為Map集合注入了兩個雇員的信息。由于Map中的key類型為String,所以設置的key為普通字符串數據,而Map中的value則引入了配置Bean類。
3.【mldnspring-base項目】編寫測試程序,實現Map數據輸出。

由于Map集合中的key不允許重復,所以在本程序中如果設置了重復的key,則會產生替換處理。通過配置結果也可以發現,Map集合中的數據保存順序為配置順序。
3.3.4 注入Properties集合
Properties是Hashtable的子類,在實際開發中用于配置信息的保存處理,其所保存的key與value全部為String型數據。
1.【mldnspring-base項目】修改Dept.java程序類,追加Properties屬性。

2.【mldnspring-base項目】修改spring-base.xml配置文件,配置Properties屬性內容。

3.【mldnspring-base項目】編寫測試程序,輸出全部的Properties信息。

由于Properties是Hashtable子類,所以可以直接使用forEach輸出。通過輸出結果可以發現,Properties中保存的順序是無序的。
提示:Properties與框架整合。
在Bean管理中,有關集合注入最為重要的就是Properties屬性,如果需要進行Spring框架整合處理,例如整合Hibernate、MyBatis等,可以通過Properties進行相關屬性的定義。
- Go Web編程
- Learning ArcGIS Pro 2
- 實用防銹油配方與制備200例
- 精通Python設計模式(第2版)
- The Complete Coding Interview Guide in Java
- Highcharts Cookbook
- Bootstrap for Rails
- C#程序設計基礎入門教程
- Learning C++ by Creating Games with UE4
- Node.js應用開發
- 測試工程師Python開發實戰
- JavaScript語法簡明手冊
- Lync Server Cookbook
- Building Scalable Apps with Redis and Node.js
- Cloud Development andDeployment with CloudBees