美文网首页深度解析Spring5源码
06--Spring注入集合属性

06--Spring注入集合属性

作者: 闲来也无事 | 来源:发表于2018-10-02 21:40 被阅读55次

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

    • 构造函数注入
    • Setter方法注入
    • 方法注入 (lookup-method注入和replace-method注入)

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

    • bean
    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;
        }
    }
    
    • xml
    <!--集合属性注入-->
    <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
    
    
    ========测试方法结束=======
    

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

    相关文章

      网友评论

        本文标题:06--Spring注入集合属性

        本文链接:https://www.haomeiwen.com/subject/ggbaoftx.html