Spring基于xml配置文件对list、set、map集合的属性注入

Spring基于xml配置文件对list、set、map集合的属性注入

        创建项目,导入 spring 所依赖的 jar 包,MyEclipse 开发工具的话,直接右击项目 MyEclipse --> Add Spring Capabilities... 添加 spring 容器。示例中以学生类(Student)和班级类(Grade)作为基本类:
一、list 集合属性注入

1、创建 Student 和 Grade 两个实体类

package com.aaa.beans.list;

/**
 * @Description 学生类
 * @author 刘鹏博
 * @version v1.0
 * @date 2018-3-25
 **/
public class Student {
	private String name;
	private Integer age;
	private Grade grade;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Grade getGrade() {
		return grade;
	}
	public void setGrade(Grade grade) {
		this.grade = grade;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
	
}
package com.aaa.beans.list;

import java.util.List;

/**
 * @Description 班级类
 * @author 刘鹏博
 * @version v1.0
 * @date 2018-3-25
 **/
public class Grade {
	private String name;
	private List<Student> students;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public List<Student> getStudents() {
		return students;
	}
	public void setStudents(List<Student> students) {
		this.students = students;
	}
	@Override
	public String toString() {
		return "Grade [name=" + name + ", students=" + students + "]";
	}
	
}

2、创建 spring.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"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
	<!-- stu1 -->
	<bean class="com.aaa.beans.list.Student" id="student1" p:name="张三" p:age="18" p:grade-ref="grade" />
	
	<!-- stu2 -->
	<bean class="com.aaa.beans.list.Student" id="student2" p:name="李四" p:age="28" p:grade-ref="grade" />

	<!-- stu3 -->
	<bean class="com.aaa.beans.list.Student" id="student3" p:name="王二" p:age="38" p:grade-ref="grade" />

	<!-- grade -->
	<bean class="com.aaa.beans.list.Grade" id="grade">
		<property name="name" value="一班"></property>
		<property name="students">
			<list>
				<ref bean="student1"/>	
				<ref bean="student2"/>	
				<ref bean="student3"/>			
			</list>
		</property>
	</bean>
</beans>

3、创建 Test 测试类

package com.aaa.beans.list;


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


/**
 * @Description 测试类
 * @author 刘鹏博
 * @version v1.0
 * @date 2018-3-25
 **/
public class Test {
	public static void main(String[] args) {
		ApplicationContext path = new ClassPathXmlApplicationContext("com/aaa/beans/list/spring.xml");
		Grade bean = (Grade) path.getBean("grade");
		System.out.println(bean);
	
	}

}	
二、set 集合属性注入

        set 集合属性注入和 list 集合基本相同,不一样的地方只是 实体类的班级返回值类型和 spring.xml 配置文件中的属性集合类型,list 标签改为 set 标签即可。

三、map 集合属性注入

        map 集合我们都熟知,它的储存方式是以键值对的方式进行存储,其中key值不能重复。下面我们使用 map 集合对它进行属性的注入,和 list、set 有些区别。

1、创建 Student 和 Grade 两个实体类

package com.aaa.beans.map;

/**
 * @Description 学生类
 * @author 刘鹏博
 * @version v1.0
 * @date 2018-3-25
 **/
public class Student {
	private String name;
	private Integer age;
	private Grade grade;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Grade getGrade() {
		return grade;
	}
	public void setGrade(Grade grade) {
		this.grade = grade;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
	
	
}
package com.aaa.beans.map;

import com.sun.javafx.collections.MappingChange.Map;

/**
 * @Description 班级类
 * @author 刘鹏博
 * @version v1.0
 * @date 2018-3-25
 **/
public class Grade {
	private String name;
	private Map<String, Student> students;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public Map<String, Student> getStudents() {
		return students;
	}
	public void setStudents(Map<String, Student> students) {
		this.students = students;
	}
	@Override
	public String toString() {
		return "Grade [name=" + name + ", students=" + students + "]";
	}
}
2、创建 spring.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"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
	
	<!-- stu1 -->
	<bean class="com.aaa.beans.list.entity.Student" id="student1" p:name="张三" p:age="18" p:grade-ref="grade" />
	
	<!-- stu2 -->
	<bean class="com.aaa.beans.list.entity.Student" id="student2" p:name="李四" p:age="28" p:grade-ref="grade" />

	<!-- stu3 -->
	<bean class="com.aaa.beans.list.entity.Student" id="student3" p:name="王二" p:age="38" p:grade-ref="grade" />

	<!-- grade -->
	<bean class="com.aaa.beans.list.entity.Grade" id="grade">
		<property name="name" value="一班"></property>
		<property name="students">
			<map>
				<entry key="stu1" value-ref="student1" />
				<entry key="stu2" value-ref="student2" />
				<entry key="stu3" value-ref="student3" />
			</map>
		</property>
	</bean>
</beans>
3、测试类同上,需要注意的是 map 集合中注入属性值时是使用的 entry 标签,设置其中的 key 值和 value 值。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值