spring list注入也是Constructor构造函数注入中的一种,只是类的构造方法的参数是list集合而已,所有构造方法里面的参数都是放在bean下的constructor-arg标签里面,下面将建一个问题类question,一个question有多个answer答案,案例中涉及如下这几个java类。
Question.java
applicationContext.xml
Test.java
1:新建Question.java类,该类中有两个构造方法和一个displayInfo()方法,其目的就是想在构造函数中注入list集合,然后通过displayInfo()方法将注入的内容全部遍历输出,代码如下:
package com.tpyyes; import java.util.Iterator; import java.util.List; public class Question { private int id; private String name; private List<String> answers; public Question() {} public Question(int id, String name, List<String> answers) { super(); this.id = id; this.name = name; this.answers = answers; } //遍历输出 public void displayInfo(){ System.out.println(id+" "+name); System.out.println("answers 是:"); Iterator<String> itr=answers.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } }
2:在applicationContext.xml文件中注入id,name,answers这三个参数,这三个参数都定义在constructor-arg标签里面,唯一不一样的是注入list参数的时候,参数值是放在<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.javatpoint.Question"> <constructor-arg value="111"></constructor-arg> <constructor-arg value="什么是java?"></constructor-arg> <constructor-arg> <list> <value>Java是一门编程语言</value> <value>Java是一个控件</value> <value>Java是一种咖啡</value> </list> </constructor-arg> </bean> </beans>
3:创建Test.java类,这个测试类里面将做初始化applicationContext.xml,并调用displayInfo()方法输出所有的answer回答选项,代码如下:
public class Test { public static void main(String[] args) { Resource r=new ClassPathResource("applicationContext.xml"); BeanFactory factory=new XmlBeanFactory(r); Question q=(Question)factory.getBean("que"); q.displayInfo(); } }
完毕!
如果有什么建议或意见,请关注微信公众号:太平洋学习网,我们一起来交流。