Spring装配支持的集合类型
集合元素 用途
<list> 装配一列值,允许重复
<set> 装配一列集,不允许重复
<map> 装配键值对的集合, 名称和值可以是任何类型
<props> 装配键值对的集合,名称和值是String类型
首先我们来演示<list>
我们先定义一个接口Description.java:
- package com.spring.di;
- public interface Description {
- public void say();
- }
我们再写三个具体的实现:
- package com.spring.di;
- public class PeopleDescription implements Description{
- public void say() {
- System.out.println("我今年23岁了");
- }
- }
- package com.spring.di;
- public class PeopleDescription2 implements Description{
- public void say() {
- System.out.println("我的名字叫曹锋");
- }
- }
- package com.spring.di;
- public class PeopleDescription3 implements Description{
- public void say() {
- System.out.println("我的QQ是:527085608");
- }
- }
我们再定义一个接口People.java:
- package com.spring.di;
- public interface People {
- public void say();
- }
我们再写一个具体的实现Jack.java:
- package com.spring.di;
- import java.util.Collection;
- public class Jack implements People{
- private Collection<Description> descriptions;
- public void setDescriptions(Collection<Description> descriptions) {
- this.descriptions = descriptions;
- }
- public void say() {
- for(Description description:descriptions){
- description.say();
- }
- }
- }
我们写一个Spring的配置文件ditest.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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
- <bean id="description" class="com.spring.di.PeopleDescription"/>
- <bean id="description2" class="com.spring.di.PeopleDescription2"/>
- <bean id="description3" class="com.spring.di.PeopleDescription3"/>
- <bean id="jack" class="com.spring.di.Jack">
- <!-- 通过set方法注入属性集合 -->
- <property name="descriptions">
- <list>
- <ref bean="description"/>
- <ref bean="description2"/>
- <ref bean="description3"/>
- <ref bean="description3"/>
- </list>
- </property>
- </bean>
- </beans>
我们再写一个测试类DiTest.java:
- package com.spring.di;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class DiTest {
- public static void main(String[] args) {
- ApplicationContext ctx=new ClassPathXmlApplicationContext("ditest.xml");
- People p1=(People) ctx.getBean("jack");
- p1.say();
- }
- }
输出结果:
- 我今年23岁了
- 我的名字叫曹锋
- 我的QQ是:527085608
- 我的QQ是:527085608
我们再来演示<set>
其他不变,我们改变ditest.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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
- <bean id="description" class="com.spring.di.PeopleDescription"/>
- <bean id="description2" class="com.spring.di.PeopleDescription2"/>
- <bean id="description3" class="com.spring.di.PeopleDescription3"/>
- <bean id="jack" class="com.spring.di.Jack">
- <!-- 通过set方法注入属性集合 -->
- <property name="descriptions">
- <set>
- <ref bean="description"/>
- <ref bean="description2"/>
- <ref bean="description3"/>
- <ref bean="description3"/>
- </set>
- </property>
- </bean>
- </beans>
输出:
- 我今年23岁了
- 我的名字叫曹锋
- 我的QQ是:527085608
我们再来演示<map>
我们修改jack.java文件如下:
- package com.spring.di;
- import java.util.Map;
- public class Jack implements People{
- private Map<String,Description> descriptions;
- public void setDescriptions(Map<String, Description> descriptions) {
- this.descriptions = descriptions;
- }
- public void say() {
- for(String key:descriptions.keySet()){
- System.out.print(key+":");
- Description description=descriptions.get(key);
- description.say();
- }
- }
- }
修改配置文件ditest.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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
- <bean id="description" class="com.spring.di.PeopleDescription"/>
- <bean id="description2" class="com.spring.di.PeopleDescription2"/>
- <bean id="description3" class="com.spring.di.PeopleDescription3"/>
- <bean id="jack" class="com.spring.di.Jack">
- <!-- 通过set方法注入属性集合 -->
- <property name="descriptions">
- <map>
- <entry key="年龄" value-ref="description"/>
- <entry key="姓名" value-ref="description2"/>
- <entry key="QQ" value-ref="description3"/>
- </map>
- </property>
- </bean>
- </beans>
输出结果:
- 年龄:我今年23岁了
- 姓名:我的名字叫曹锋
- QQ:我的QQ是:527085608
最近我们来演示<props>
我们修改Jack.java文件如下:
- package com.spring.di;
- import java.util.Iterator;
- import java.util.Properties;
- public class Jack implements People{
- private Properties descriptions;
- public void setDescriptions(Properties descriptions) {
- this.descriptions = descriptions;
- }
- public void say() {
- for(Iterator iter=descriptions.keySet().iterator();iter.hasNext();){
- String key=(String)iter.next();
- System.out.println(key+":"+descriptions.getProperty(key));
- }
- }
- }
我们修改ditest.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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
- <bean id="description" class="com.spring.di.PeopleDescription"/>
- <bean id="description2" class="com.spring.di.PeopleDescription2"/>
- <bean id="description3" class="com.spring.di.PeopleDescription3"/>
- <bean id="jack" class="com.spring.di.Jack">
- <!-- 通过set方法注入属性集合 -->
- <property name="descriptions">
- <props>
- <prop key="年龄">23</prop>
- <prop key="姓名">曹锋</prop>
- <prop key="QQ">527085608</prop>
- </props>
- </property>
- </bean>
- </beans>
输出:
- QQ:527085608
- 姓名:曹锋
- 年龄:23