Spring不仅能注入简单类型数据,还能注入集合(Collection、无序集合Set、有序集合List)类型、数组(Array)类型、字典(Map)类型数据、Properties类型数据,接下来就让我们一个个看看如何注入这些数据类型的数据。
一、注入集合类型:包括Collection类型、Set类型、List类型数据:
(1)List类型:需要使用标签来配置注入,其具体配置如下:
让我们来写个测试来练习一下吧:
准备测试类:
package cn.javass.spring.chapter3.bean;
import java.util.List;
public class ListTestBean {
private List values;
public List getValues() {
return values;
}
public void setValues(List values) {
this.values = values;
}
}
进行Bean定义,在配置文件(resources/chapter3/listInject.xml)中配置list注入:
1
2
3
测试代码:
@Test
public void testListInject() {
BeanFactory beanFactory =
new ClassPathXmlApplicationContext("chapter3/listInject.xml");
ListTestBean listBean = beanFactory.getBean("listBean", ListTestBean.class);
System.out.println(listBean.getValues().size());
Assert.assertEquals(3, listBean.getValues().size());
}
(2)Set类型:需要使用标签来配置注入,其配置参数及含义和标签完全一样,在此就不阐述了:
准备测试类:
package cn.javass.spring.chapter3.bean;
import java.util.Collection;
public class CollectionTestBean {
private Collection values;
public void setValues(Collection values) {
this.values = values;
}
public Collection getValues() {
return values;
}
}
进行Bean定义,在配置文件(resources/chapter3/listInject.xml)中配置list注入:
1
2
3
具体测试代码就不写了,和listBean测试代码完全一样。
(2)Collection类型:因为Collection类型是Set和List类型的基类型,所以使用或标签都可以进行注入,配置方式完全和以上配置方式一样,只是将测试类属性改成“Collection”类型,如果配置有问题,可参考cn.javass.spring.chapter3.DependencyInjectTest测试类中的testCollectionInject测试方法中的代码。
二、注入数组类型:需要使用标签来配置注入,其中标签属性“value-type”和“merge”和标签含义完全一样,具体配置如下:
如果练习时遇到配置问题,可以参考“cn.javass.spring.chapter3.DependencyInjectTest”测试类中的testArrayInject测试方法中的代码。
三、注入字典(Map)类型:字典类型是包含键值对数据的数据结构,需要使用标签来配置注入,其属性“key-type”和“value-type”分别指定“键”和“值”的数据类型,其含义和标签的“value-type”含义一样,在此就不罗嗦了,并使用子标签来指定键数据,子标签来指定键对应的值数据,具体配置如下:
如果练习时遇到配置问题,可以参考“cn.javass.spring.chapter3.DependencyInjectTest”测试类中的testMapInject测试方法中的代码。
四、Properties注入:Spring能注入java.util.Properties类型数据,需要使用标签来配置注入,键和值类型必须是String,不能变,子标签值来指定键值对,具体配置如下:
如果练习时遇到配置问题,可以参考cn.javass.spring.chapter3.DependencyInjectTest测试类中的testPropertiesInject测试方法中的代码。
到此我们已经把简单类型及集合类型介绍完了,大家可能会问怎么没见注入“Bean之间关系”的例子呢?接下来就让我们来讲解配置Bean之间依赖关系,也就是注入依赖Bean。