zoukankan      html  css  js  c++  java
  • spring装配集合

    前面我们已经了解了怎样使用spring装备简单的属性(使用value属性)和引用其它bean的属性(使用ref属性)。可是value和ref仅在Bean的属性值是单个值的情况下才实用。当bean的属性值是复数时-----假设属性的类型是集合。

    当配置集合类型的bean属性时。spring提供了4种类型的集合配置元素,例如以下。

    集合元素 用途
    <list> 装配list类型的值,同意反复
    <set> 装配set类型,不同意反复
    <map> 装配map类型的值,名称和值能够是随意类型
    <props> 装配properties类型的值,名称和值必须都是String类型

    一、装配List、  Set、  Array

    以下来看看<list>

    public class Roles {
    	private String roleName;
    	private List<Users> users;
    	//省略set get方法
    	
    	//重写toString方法,方便測试
    	@Override
    	public String toString() {
    		return "Roles [roleName=" + roleName + ", users=" + users + "]";
    	}
    }

    public class Users {
    	private String name;
    	//省略set get方法
    
    	@Override
    	public String toString() {
    		return "Users [name=" + name + "]";
    	}
    }
    spring配置:

    能装配List、Set、Array(是String类型的时候能够)

    	<bean id="roles" class="cn.com.ztz.spring.model.Roles">
    		<property name="roleName" value="辅导员"/>
    		<property name="users">
    			<list>
    				<ref bean="users1"/>
    				<ref bean="users2"/>
    				<ref bean="users2"/>
    			</list>
    		</property>
    	</bean>
    	<bean id="users1" class="cn.com.ztz.spring.model.Users">
    		<property name="name" value="张三"/>
    	</bean>
    	<bean id="users2" class="cn.com.ztz.spring.model.Users">
    		<property name="name" value="李四"/>
    	</bean>



    执行測试main方法:

    	public static void main(String[] args) {
    		ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
    		Roles r=(Roles)context.getBean("roles");
    		System.out.println(r.toString());
    	}
    输出结果:

    Roles [roleName=辅导员, users=[Users [name=张三], Users [name=李四], Users [name=李四]]]


    <set>元素来装配集合类型或者数组类型:

    	<bean id="roles" class="cn.com.ztz.spring.model.Roles">
    		<property name="roleName" value="辅导员"/>
    		<property name="users">
    			<set>
    				<ref bean="users1"/>
    				<ref bean="users2"/>
    				<ref bean="users2"/>
    			</set>
    		</property>
    	</bean>
    	<bean id="users1" class="cn.com.ztz.spring.model.Users">
    		<property name="name" value="张三"/>
    	</bean>
    	<bean id="users2" class="cn.com.ztz.spring.model.Users">
    		<property name="name" value="李四"/>
    	</bean>

    输出结果:

    Roles [roleName=辅导员, users=[Users [name=张三], Users [name=李四]]]


    二、装配<map>集合:

    public class Roles {
    	private String roleName;
    	private Map<String,Users> users;
    	//省略set get方法
    	
    	//重写toString方法,方便測试
    	@Override
    	public String toString() {
    		return "Roles [roleName=" + roleName + ", users=" + users + "]";
    	}
    }

    	<bean id="roles" class="cn.com.ztz.spring.model.Roles">
    		<property name="roleName" value="辅导员"/>
    		<property name="users">
    			<map>
    				<entry key="USERS1" value-ref="users1"/>
    				<entry key="USERS2" value-ref="users2"/>
    			</map>
    		</property>
    	</bean>
    	<bean id="users1" class="cn.com.ztz.spring.model.Users">
    		<property name="name" value="张三"/>
    	</bean>
    	<bean id="users2" class="cn.com.ztz.spring.model.Users">
    		<property name="name" value="李四"/>
    	</bean>

    执行測试main方法。输出结果:

    Roles [roleName=辅导员, users={USERS1=Users [name=张三], USERS2=Users [name=李四]}]


    <map>中的<entry>元素由一个键和一个值组成,键和值能够是简单类型,也能够是其它的Bean的引用。

    这些属性将帮助我们指定<entry>的键和值


    属性 用途
    key 指定map中entry的键为String
    key-ref 指定map中entry的键为String上下文其它Bean的引用
    value 指定map中entry的键为String
    value-ref 指定map中entry的键为String上下文其它Bean的引用

    三、装配Properties集合
    public class Roles {
    	private String roleName;
    	private Properties users;
    	//省略set get方法
    	
    	//重写toString方法,方便測试
    	@Override
    	public String toString() {
    		return "Roles [roleName=" + roleName + ", users=" + users + "]";
    	}
    }
    spring配置:
    <bean id="roles" class="cn.com.ztz.spring.model.Roles">
    		<property name="roleName" value="辅导员"/>
    		<property name="users">
    			<props>
    				<prop key="USERS">张三</prop>
    				<prop key="AGE">19</prop>
    			</props>
    		</property>
    	</bean>

    输出结果:

    Roles [roleName=辅导员, users={AGE=19, USERS=张三}]

    四、装配空值

    除了为bean的属性或者构造器參数装配其它随意类型的值外,Spring还能够装配一个空值。或者更准确的讲,Spring能够装配null值。

    public class Roles {
    	private String roleName;
    	private Users users;
    	//省略set get方法
    	
    	//重写toString方法,方便測试
    	@Override
    	public String toString() {
    		return "Roles [roleName=" + roleName + ", users=" + users + "]";
    	}
    }

    spring配置:
    	<bean id="roles" class="cn.com.ztz.spring.model.Roles">
    		<property name="roleName" value="辅导员"/>
    		<property name="users"><null/></property>
    	</bean>
    输出结果:

    Roles [roleName=辅导员, users=null]


  • 相关阅读:
    使用KRPano资源分析工具一键下载全景网站切片图
    使用KRPano资源分析工具解密被加密的XML
    数据库---表---增删改与权限
    数据库---表---表操作练习
    数据库---表---完整性约束
    数据库---表---数据类型
    数据库---表操作---增删改查
    数据库---库操作---表操作
    数据库---初识sql语句
    数据库---mysql的介绍和安装
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6866629.html
Copyright © 2011-2022 走看看