- 名师讲坛:Spring实战开发(Redis+SpringDataJPA+SpringMVC+SpringSecurity)
- 李兴华
- 1296字
- 2021-03-30 21:09:13
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进行相关属性的定义。