SpringIoC之集合注入与空值注入

        我们配置基本数据类型使用value属性和使用<property>标签的ref属性在你的bean配置文件中的对象引用。这两种情况下处理过单值到一个bean

        如果我们要注入集合,Spring提供了四种类型的如下集合的配置元素:

元素

描述

<list>

这有助于注入值列表List配线,使重复。

<set>

这有助于在配线的一组值,但不能重复。

<map>

这可用于注入的名称 - 值对,其中名称和值可以是任何类型的集合。

<props>

这可以用来注入的名称 - 值对,其中名称和值都是字符串的集合。

      可以使用<list> <set> 来连接任何实现java.util.Collection或数组。

       若我们想为

     示例:我们新建一个CollectionDemo类,这个类中有List、Set、Map集合和一个字符串类型nullTest,用来赋空值:

package com.test4;

import org.springframework.beans.factory.annotation.Required;

import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class CollectionDemo {

    private Map map;
    private Set set;
    private List list;
    private String nullTest;

    public CollectionDemo() {
    }

    public CollectionDemo(Map map, Set set, List list, String nullTest) {
        this.map = map;
        this.set = set;
        this.list = list;
        this.nullTest = nullTest;
    }

    public Map getMap() {
        return map;
    }
    @Required
    public void setMap(Map map) {
        this.map = map;
    }
    @Required
    public Set getSet() {
        return set;
    }
    @Required
    public void setSet(Set set) {
        this.set = set;
    }

    public List getList() {
        return list;
    }

    public void setList(List list) {
        this.list = list;
    }

    public String getNullTest() {
        return nullTest;
    }
    @Required
    public void setNullTest(String nullTest) {
        this.nullTest = nullTest;
    }
    public void collectionCheck(){
        for (Object str:list) {
            System.out.println(str);
        }

        for (int i=1;i<=map.size();i++){
            System.out.println(map.get(i+""));
        }
        Iterator iterator=set.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
    public void printNull(){
        System.out.println(nullTest);
    }
}
@Required注解的属性或者类必须在Xml配置文件中注入,否则编译不通过
          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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--构造注入自动装配MathDemo和StudyDemo-->
    <bean id="CollectionDemo" class="com.test4.CollectionDemo">
        <!--注入List集合-->
        <property name="list">
            <list>
                <value>list_a</value>
                <value>list_b</value>
                <value>list_c</value>
            </list>
        </property>
        <!--注入Map集合-->
        <property name="map">
            <map>
                <entry key="1" value="map_a"/>
                <entry key="2" value="map_b"/>
                <entry key="3" value="map_c"/>
            </map>
        </property>
        <!--注入Set集合-->
        <property name="set">
            <set>
                <value>set_a</value>
                <value>set_b</value>
                <value>set_c</value>
            </set>
        </property>
        <!--注入空值-->
        <property name="nullTest"><null/></property>
    </bean>
</beans>
我们新建测试类:

package com.test4;

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

public class testMain {
    public static void main(String[] args) {
        //创建Spring上下文(加载study.xml)
        ApplicationContext acx= new ClassPathXmlApplicationContext("test4.xml");
        //获取StudyDemo实例并赋值
        CollectionDemo cc=acx.getBean("CollectionDemo",CollectionDemo.class);
        //遍历集合
        cc.collectionCheck();
        //打印null
        cc.printNull();
        //销毁实例对象
        ((ClassPathXmlApplicationContext) acx).close();
    }
}

测试结果:






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值