深度解析Spring5源码

06--Spring注入集合属性

2018-10-02  本文已影响55人  闲来也无事

Spring的依赖注入方式大体上可以分为三种:

构造函数注入可参考 04--Spring实例化Bean的三种方式
,本篇介绍通过Setter方法注入集合属性。下一篇介绍方法注入。

package com.lyc.cn.v2.day01.collection;

import org.springframework.util.CollectionUtils;

import java.util.*;

/**
 * 集合属性注入
 * @author: LiYanChao
 * @create: 2018-09-29 15:46
 */
public class Cat {
    /** 注入List集合 **/
    private List<String> listNames;

    /***注入Set集合*/
    private Set<String> setNames;

    /** 注入Properties **/
    private Properties propertiesNames;

    /** 注入Map集合 **/
    private Map<String, String> mapNames;

    /** 注入数组 **/
    private String[] arrayNames;


    /**
     * 打印数组集合
     */
    public void sayArrayNames() {
        System.out.println("注入数组-->");
        if (arrayNames != null && arrayNames.length > 0) {
            for (int i = 0; i < arrayNames.length; i++) {
                System.out.println(arrayNames[i]);
            }
        }
        System.out.println();
    }

    /**
     * 打印Map集合
     */
    public void sayMapNames() {
        if (null != mapNames && mapNames.size() > 0) {
            System.out.println("注入Map集合-->");
            for (Map.Entry<String, String> entry : mapNames.entrySet()) {
                System.out.println("key= " + entry.getKey() + " value= " + entry.getValue());
            }
            System.out.println();
        }
    }

    /**
     * 打印Properties属性
     */
    public void sayPropertiesNames() {
        if (null != propertiesNames) {
            System.out.println("注入properties属性-->");
            System.out.println(propertiesNames.get("name"));
            System.out.println(propertiesNames.get("age"));
            System.out.println();
        }
    }

    /**
     * 打印List集合
     */
    public void sayListNames() {
        if (!CollectionUtils.isEmpty(listNames)) {
            System.out.println("注入List集合-->");
            for (String string : listNames) {
                System.out.println(string);
            }
            System.out.println();
        }
    }

    /**
     * 打印Set集合
     */
    public void saySetNames() {
        if (!CollectionUtils.isEmpty(setNames)) {
            System.out.println("注入Set集合-->");
            Iterator<String> iterator = setNames.iterator();
            while (iterator.hasNext()) {
                System.out.println(iterator.next());
            }
            System.out.println();
        }
    }

    public List<String> getListNames() {
        return listNames;
    }

    public void setListNames(List<String> listNames) {
        this.listNames = listNames;
    }

    public Set<String> getSetNames() {
        return setNames;
    }

    public void setSetNames(Set<String> setNames) {
        this.setNames = setNames;
    }

    public Properties getPropertiesNames() {
        return propertiesNames;
    }

    public void setPropertiesNames(Properties propertiesNames) {
        this.propertiesNames = propertiesNames;
    }

    public Map<String, String> getMapNames() {
        return mapNames;
    }

    public void setMapNames(Map<String, String> mapNames) {
        this.mapNames = mapNames;
    }

    public String[] getArrayNames() {
        return arrayNames;
    }

    public void setArrayNames(String[] arrayNames) {
        this.arrayNames = arrayNames;
    }
}
<!--集合属性注入-->
<bean id="cat" class="com.lyc.cn.v2.day01.collection.Cat">
    <!--注入List集合-->
    <property name="listNames">
        <!-- merge 父子bean是否合并条目 -->
        <list value-type="java.lang.String" merge="false">
            <value>张三</value>
            <value>李四</value>
            <value>王五</value>
        </list>
    </property>

    <!--注入Set集合-->
    <property name="setNames">
        <set value-type="java.lang.String" merge="true">
            <value>张三</value>
            <value>李四</value>
            <value>王五</value>
        </set>
    </property>

    <!--注入Map集合-->
    <property name="mapNames">
        <map key-type="java.lang.String" value-type="java.lang.String">
            <entry key="name" value="小明"/>
            <entry key="age" value="3"/>
        </map>
    </property>

    <!--注入数组-->
    <property name="arrayNames">
        <array value-type="java.lang.String">
            <value>张三</value>
            <value>李四</value>
            <value>王五</value>
        </array>
    </property>

    <!--注入Properties-->
    <property name="propertiesNames">
        <props value-type="java.lang.String">
            <prop key="name">小明</prop>
            <prop key="age">3</prop>
        </props>
    </property>
</bean>
@Test
public void test7() {
    // 注入集合属性
    Cat cat = xmlBeanFactory.getBean("cat", Cat.class);
    cat.sayListNames();
    cat.saySetNames();
    cat.sayArrayNames();
    cat.sayMapNames();
    cat.sayPropertiesNames();
}
========测试方法开始=======

注入List集合-->
张三
李四
王五

注入Set集合-->
张三
李四
王五

注入数组-->
张三
李四
王五

注入Map集合-->
key= name value= 小明
key= age value= 3

注入properties属性-->
小明
3


========测试方法结束=======

本节内容基于配置,说明可参考配置文件说明。

上一篇下一篇

猜你喜欢

热点阅读