前言:
前面两篇文件已经大致介绍了入门程序和值注入,对象注入。在本篇文章中,将会有更多类型的bean属性注入!比如:list,set,Map等集合属性的注入。并介绍名称空间等小知识。
接下来我们直接进入主题:
list集合篇:
我们开始改一下实体类,添加一个List集合属性
package com.wen.vo;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.wen.test.Curriculum;
/**
* 实体类,实体有名字和年龄
* @author wen
*
*/
public class Student {
private String name;
private int age;
private Curriculum curriculum;
//位了下面方便各种类型,直接使用Object
private List<Object> list;
public List<Object> getList() {
return list;
}
public void setList(List<Object> list) {
this.list = list;
}
public Curriculum getCurriculum() {
return curriculum;
}
public void setCurriculum(Curriculum curriculum) {
this.curriculum = curriculum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
添加后,我们一起来看配置文件:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd ">
<bean id="curriculum" class="com.wen.test.Curriculum">
<property name="curriculumName" value="Spring入门"></property>
<property name="curriculumId" value="1001" ></property>
</bean>
<bean id="student" class="com.wen.vo.Student">
<property name="name" value="wen"></property>
<property name="age" value="20" ></property>
<property name="curriculum" ref="curriculum"></property>
<property name="list">
<!-- list集合中放各种类型 -->
<list>
<!-- 放普通值类型 -->
<value>wen</value>
<!-- 放对象类型 -->
<ref bean="curriculum"/>
<!-- 还可以放 map set等等类型。有兴趣的同学可以一一尝试 -->
</list>
</property>
</bean>
</beans>
上面代码仅做思路启发,日过想尝试更多类型的同学可以自行去尝试。上面的<list>标签内,我们放了一个普通的list的值,接下来我们又放了一个对象(集合中可以放各种类型的数据,但是数组只能放一种类型的数据!理论上是这么说的,但是在开发中集合一般也是只想一种类型,除非很特殊吧),当然对象名字在上面已经标红,方便大家学习理解。
一个例子一个测试一遍吧。看看程序是否有问题。
package com.wen.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.wen.vo.Student;
public class SpringTest {
public static void main(String[] args) {
ApplicationContext applicationContext= new ClassPathXmlApplicationContext("applicationContext-test.xml");
Student student=(Student) applicationContext.getBean("student");
// System.out.println("年龄"+student.getAge()+" "+"成绩"+student.getName());
// System.out.println("课程信息"+student.getCurriculum());
for(int i=0;i<student.getList().size();i++){
System.out.println(student.getList().get(i));
}
}
}
测试结果:
set集合篇:
在实体类中在加一个变量并提供getter,setter方法。因为
private Set<Object> set;
public Set<Object> getSet() {
return set;
}
public void setSet(Set<Object> set) {
this.set = set;
}
xml文件中添加:
<property name="set">
<set>
<!-- 放普通值类型 -->
<value>wen</value>
<!-- 放对象类型 -->
<ref bean="curriculum"/>
</set>
</property>
和list集合基本相似,所以不做太多介绍,测试结果也是一样的,就不展示了。
map集合篇:
老规矩:
private Map<Object, Object> map;
public Map<Object, Object> getMap() {
return map;
}
public void setMap(Map<Object, Object> map) {
this.map = map;
}
配置文件中加入如下:
<property name="map">
<map>
<entry key="wen" value="test"></entry>
<entry key="test" value-ref="curriculum"></entry>
</map>
</property>
测试结果:
总结:
写到这里基本就完成了今天的文章了。上述只是简单的示例应用,有兴趣的同学可以将它变得更加复杂。让自己更加深刻的理解。如果文章有有错误或者是其他不足之处,欢迎给为同学,大神批评指正。小编会第一时间调整博文。
最后,谢谢大家!