我们配置基本数据类型使用value属性和使用<property>标签的ref属性在你的bean配置文件中的对象引用。这两种情况下处理过单值到一个bean。
如果我们要注入集合,Spring提供了四种类型的如下集合的配置元素:
元素 | 描述 |
<list> | 这有助于注入值列表List配线,使重复。 |
<set> | 这有助于在配线的一组值,但不能重复。 |
<map> | 这可用于注入的名称 - 值对,其中名称和值可以是任何类型的集合。 |
<props> | 这可以用来注入的名称 - 值对,其中名称和值都是字符串的集合。 |
可以使用<list> 或<set> 来连接任何实现java.util.Collection或数组。
若我们想为
示例:我们新建一个CollectionDemo类,这个类中有List、Set、Map集合和一个字符串类型nullTest,用来赋空值:
package com.test4;
import org.springframework.beans.factory.annotation.Required;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class CollectionDemo {
private Map map;
private Set set;
private List list;
private String nullTest;
public CollectionDemo() {
}
public CollectionDemo(Map map, Set set, List list, String nullTest) {
this.map = map;
this.set = set;
this.list = list;
this.nullTest = nullTest;
}
public Map getMap() {
return map;
}
@Required
public void setMap(Map map) {
this.map = map;
}
@Required
public Set getSet() {
return set;
}
@Required
public void setSet(Set set) {
this.set = set;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public String getNullTest() {
return nullTest;
}
@Required
public void setNullTest(String nullTest) {
this.nullTest = nullTest;
}
public void collectionCheck(){
for (Object str:list) {
System.out.println(str);
}
for (int i=1;i<=map.size();i++){
System.out.println(map.get(i+""));
}
Iterator iterator=set.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
public void printNull(){
System.out.println(nullTest);
}
}
被@Required注解的属性或者类必须在Xml配置文件中注入,否则编译不通过。xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--构造注入自动装配MathDemo和StudyDemo-->
<bean id="CollectionDemo" class="com.test4.CollectionDemo">
<!--注入List集合-->
<property name="list">
<list>
<value>list_a</value>
<value>list_b</value>
<value>list_c</value>
</list>
</property>
<!--注入Map集合-->
<property name="map">
<map>
<entry key="1" value="map_a"/>
<entry key="2" value="map_b"/>
<entry key="3" value="map_c"/>
</map>
</property>
<!--注入Set集合-->
<property name="set">
<set>
<value>set_a</value>
<value>set_b</value>
<value>set_c</value>
</set>
</property>
<!--注入空值-->
<property name="nullTest"><null/></property>
</bean>
</beans>
我们新建测试类:
package com.test4;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class testMain {
public static void main(String[] args) {
//创建Spring上下文(加载study.xml)
ApplicationContext acx= new ClassPathXmlApplicationContext("test4.xml");
//获取StudyDemo实例并赋值
CollectionDemo cc=acx.getBean("CollectionDemo",CollectionDemo.class);
//遍历集合
cc.collectionCheck();
//打印null
cc.printNull();
//销毁实例对象
((ClassPathXmlApplicationContext) acx).close();
}
}
测试结果: