Spring 集合注入 [ Collection Injection ]

    对于简单数据类型(byte,char,short,int,float,double,long )或者String的注入,一般只需写入标签<value>即可。比如:

<property name="propertyName" value="simpleValue" />
或者

<property name="propertyName">
    <value>simpleValue</value>
</property>

或者p模式


  如果需要注入的是集合(list,set,map,pros),那该怎么做呢?

如果集合的泛型是简单数据类型,比如 List<String>,可以这样实现:

<property name="students">
    <list>
        <value>student1</value>
        <value>student2</value>
        ...
    </list>
</property>

如果集合的泛型是引用类型,比如List<Student>,可以利用内部bean实现

<property name="students">
    <list>
        <bean class="FullQualifiedNameClass">
            <property name="name" value="zhangsan" />
            <property name="age" value="20" />
        </bean>
        <bean class="FullQualifiedNameClass">
            <property name="name" value="lisi" />
            <property name="age" value="22" />
        </bean>
        ......
    </list>
</property>

下面是一个具体例子:

省份类:

public class Province {

	private String name;		  // 省份名称
	private long population;      // 人口
	private List<String> cities;  // 城市列表
	private List<Official> officials;  // 官员
         // 标准setter 和 getter 以及 toString方法省略
}

public class Official {

	private String name;
	private String title;
	private String age;
       // 省略setter 和 getter 以及 toString方法
}

bean配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="sichuan" class="org.spring.collection.Province" scope="singleton">
	    <property name="name">
	        <value>四川</value>
	    </property>
	    <property name="population" value="87225224" />
	    <property name="cities">
	        <list>
	            <value>成都</value>
	            <value>绵阳</value>
	            <value>德阳</value>
	            <value>攀枝花</value>
	            <value>遂宁</value>
	            <value>江油</value>
	        </list>
	    </property>
	    <property name="officials">
	        <list>
	            <bean class="org.spring.collection.Official">
	                <property name="name" value="zhangsan" />
	                <property name="age" value="45" />
	                <property name="title" value="mayor" />
	            </bean>
	            <bean class="org.spring.collection.Official">
	                <property name="name" value="lisi" />
	                <property name="age" value="55" />
	                <property name="title" value="coutrier" />
	            </bean>
	            <bean class="org.spring.collection.Official">
	                <property name="name" value="wangwu" />
	                <property name="age" value="42" />
	                <property name="title" value="villager" />
	            </bean>	            
	        </list>
	    </property>
	</bean>
</beans>

运行它:

public class App {

	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"SpringConfig.xml"});
		Province siChuan = (Province) context.getBean("sichuan");
		System.out.println(siChuan);
	}
}

打印输出:

Province [name=四川, population=87225224, cities=[成都, 绵阳, 德阳, 攀枝花, 遂宁, 江油], officials=[Official [name=zhangsan, title=mayor, age=45], Official [name=lisi, title=coutrier, age=55], Official [name=wangwu, title=villager, age=42]]]

这里只讲了List集合,Set,Map以及Properties以后再讲吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值