spring set list注入与spring的构造器注入list差不多,唯一的区别就是构造器注入list是把List参数放在<constructor-arg>标签里面,而set list注入是将list参数放在<property>标签内部,下面是一个set list注入示例。
list注入示例将涉及如下这几个类:
Question.java
applicationContext.xml
Test.java
1:新建Question.java类,该类中除了属性之外,还有一个为answers的list集合,代码如下。
package com.tpyyes; import java.util.Iterator; import java.util.List; public class Question { private int id; private String name; private List<String> answers; //setters and getters方法省略 public void displayInfo(){ System.out.println(id+" "+name); //输出answer System.out.println("answers are:"); Iterator<String> itr=answers.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
2:新建applicationContext.xml文件,用于给answers这个list注入值,代码如下所示。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="que" class="com.tpyyes.Question"> <property name="id" value="1"></property> <property name="name" value="什么是Java?"></property> <property name="answers"> <list> <value>Java是一门计算机语言</value> <value>Java是一个组件</value> <value>Java一种咖啡</value> </list> </property> </bean> </beans>
3:新建测试类,用于初始化注入的值并新建对象,然后调用displayInfo()方法,输出我们在applicationContext.xml中注入的值,代码如下。
package com.tpyyes; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; public class Test { public static void main(String[] args) { Resource res=new ClassPathResource("applicationContext.xml"); BeanFactory factory=new XmlBeanFactory(res); Question q=(Question)factory.getBean("que"); q.displayInfo(); } }
spring set注入list参数并不难,很容易看懂的。