使用基本的集合标签定义集合时, 不能将集合作为独立的 Bean 定义, 导致其他 Bean 无法引用该集合,所以无法在不同 Bean 之间共享集合。
可以使用 util schema 里的集合标签定义独立的集合 Bean, 需要注意的是,,必须在 <beans> 根元素里添加 util schema 定义。
示例:
1. 添加模型类
package xyz.huning.spring4.di.xml.beancfg.sharecollection;
public class Student {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}
}
package xyz.huning.spring4.di.xml.beancfg.sharecollection;
import java.util.List;
public class School {
private int id;
private String name;
private List<Student> students;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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 "School [id=" + id + ", name=" + name + ", students=" + students
+ "]";
}
}
2. 添加配置
<?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: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/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
<bean id="student1" class="xyz.huning.spring4.di.xml.beancfg.sharecollection.Student">
<property name="id" value="1"></property>
<property name="name" value="Tom"></property>
</bean>
<bean id="student2" class="xyz.huning.spring4.di.xml.beancfg.sharecollection.Student">
<property name="id" value="2"></property>
<property name="name" value="Kat"></property>
</bean>
<!--配置单例的bean,以供多个bean进行引用,需要导入util命名空间-->
<util:list id="students1">
<ref bean="student1"/>
<ref bean="student2"/>
</util:list>
<bean id="school1" class="xyz.huning.spring4.di.xml.beancfg.sharecollection.School">
<property name="id" value="1"></property>
<property name="name" value="StarSchool"></property>
<property name="students" ref="students1"></property>
</bean>
<bean id="school2" class="xyz.huning.spring4.di.xml.beancfg.sharecollection.School">
<property name="id" value="2"></property>
<property name="name" value="SunSchool"></property>
<property name="students" ref="students1"></property>
</bean>
</beans>
3. 添加测试类:
package xyz.huning.spring4.di.xml.beancfg.sharecollection;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("sharecollection.xml");
School school1 = ctx.getBean("school1", School.class);
System.out.println(school1);
School school2 = ctx.getBean("school2", School.class);
System.out.println(school2);
((ClassPathXmlApplicationContext)ctx).close();
}
}
本文介绍了如何在Spring框架中使用utilschema定义独立的集合Bean,解决不同Bean间共享集合的问题,通过示例演示了添加模型类、配置集合和测试类的过程。
3365

被折叠的 条评论
为什么被折叠?



