美文网首页JavaEE
Spring5基础(5)——Spring Bean(装配方式——

Spring5基础(5)——Spring Bean(装配方式——

作者: 小蜉蝣星蔚 | 来源:发表于2019-07-21 22:53 被阅读0次

    此博客为学习笔记,记录下来怕自己后面学着学着忘记了。 CSDN内容同步更新,id同名,本文csdn链接
    在上两篇文章中记录了Spring Bean中的配置属性+实例化+作用域+生命周期,此文将Spring Bean的补充Bean装配方式。
    这是上两篇链接:
    Spring5基础(3)——Spring Bean(配置属性+实例化+作用域)
    Spring5基础(4)——Spring Bean(生命周期)

    Spring Bean装配方式

    Spring Bean装配即将Bean类依赖注入到Spring IoC容器中,Spring Bean装配方式即Bean的依赖注入方式。
    Bean的装配方式主要有以下三种:

    • 基于xml配置文件的装配方式
    • 基于注解的装配方式
    • 自动装配
      前两种是最主流的装配方式。

    一.使用xml配置文件装配
    之前在
    Spring5基础(2)——Spring IoC控制反转(基础)
    Spring5基础(3)——Spring Bean(配置属性+实例化+作用域)
    中都有相关的例子。
    这种装配方式分为两种:①使用构造方法注入 ②使用属性setter方法注入
    由于之前在Spring5基础(3)——Spring Bean(配置属性+实例化+作用域)一文中有几个bean下的四个子元素没有尝试过(< list >、< map >、< set >、< enty >这四个子元素),所以这里还是尝试写个栗子试试,对同一个类使用构造方法和属性setter方法注入两次。
    对于属性setter注入:需提供无参构造和属性set方法
    当然竟然涉及到list ,map 和 set。就顺便找了几篇博客复习一下:
    java中Map,List与Set的区别

    package com.lipiao.demo;
    
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    public class D {
        private String name;
        private String[] strings;//数组
        private List<String> stringList;//列表
        private Map<String, String> stringStringMap;//映射
        private Set<String> stringSet;//集合
    
        //构造方法注入
        public D(String name, String[] strings, List<String> stringList,
                 Map<String, String> stringStringMap, Set<String> stringSet) {
            this.name = name;
            this.strings = strings;
            this.stringList = stringList;
            this.stringStringMap = stringStringMap;
            this.stringSet = stringSet;
        }
    
        //属性setter注入:需提供无参构造和属性set方法
        public D() {
    
        }
         public void setName(String name) {
            this.name = name;
        }
    
        public void setStrings(String[] strings) {
            this.strings = strings;
        }
    
        public void setStringList(List<String> stringList) {
            this.stringList = stringList;
        }
    
        public void setStringStringMap(Map<String, String> stringStringMap) {
            this.stringStringMap = stringStringMap;
        }
    
        public void setStringSet(Set<String> stringSet) {
            this.stringSet = stringSet;
        }
    }
    
     <!--    构造注入-->
        <bean id="D1" class="com.lipiao.demo.D">
    
        </bean>
    

    **首先使用构造方法注入:88
    填写完bean类的基本信息之后按下快捷键alt+enter,选择第一个,IDEA便会自动根据bean类进行内容补全,如下所示:


    快捷注入

    自动补全如下:< list >、< map >、< set >、< enty >这四个子元素的使用也就一目了然了。

    <!--    构造注入-->
        <bean id="D1" class="com.lipiao.demo.D">
    
            <constructor-arg index="0" value=""/>
            <constructor-arg index="1">
                <list>
                    <value></value>
                </list>
            </constructor-arg>
            <constructor-arg index="2">
                <list>
                    <value></value>
                </list>
            </constructor-arg>
            <constructor-arg index="3">
                <map>
                    <entry key="" value=""/>
                </map>
            </constructor-arg>
            <constructor-arg index="4">
                <set>
                    <value></value>
                </set>
            </constructor-arg>
        </bean>
    

    这样就能直接填写初始数据就好啦。

     <!--    构造注入-->
        <bean id="D1" class="com.lipiao.demo.D">
    
            <constructor-arg index="0" value="构造方法注入name"/>
            <constructor-arg index="1">
                <list>
                    <value>构造方法注入strings元素一</value>
                    <value>构造方法注入strings元素二</value>
                </list>
            </constructor-arg>
            <constructor-arg index="2">
                <list>
                    <value>构造方法注入stringList元素一</value>
                    <value>构造方法注入stringList元素二</value>
                </list>
            </constructor-arg>
            <constructor-arg index="3">
                <map>
                    <entry key="element1" value="构造方法注入stringStringMap元素一"/>
                    <entry key="element2" value="构造方法注入stringStringMap元素二"/>
                </map>
            </constructor-arg>
            <constructor-arg index="4">
                <set>
                    <value>构造方法注入stringSet元素一</value>
                    <value>构造方法注入stringSet元素二</value>
                </set>
            </constructor-arg>
        </bean>
    

    接下来看看setter属性注入
    同样是上边的D类,已经为所有属性都写了setter方法。
    对于属性setter注入:需提供无参构造和属性set方法
    xml中使用< property > 元素为变量提供初始值,如下所示:

    setter注入
        <!--属性setter注入-->
        <bean id="D2" class="com.lipiao.demo.D">
            <property name="name" value="属性setter注入name"/>
            <property name="strings">
                <array>
                    <value>属性setter注入strings元素一</value>
                    <value>属性setter注入strings元素二</value>
                </array>
            </property>
            <property name="stringList">
                <list>
                    <value>属性setter注入stringList元素一</value>
                    <value>属性setter注入stringList元素二</value>
                </list>
            </property>
            <property name="stringStringMap">
                <map>
                    <entry key="element1" value="属性setter注入stringStringMap元素一"/>
                    <entry key="element2" value="属性setter注入stringStringMap元素二"/>
                </map>
            </property>
            <property name="stringSet">
                <set>
                    <value>构造方法注入stringSet元素一</value>
                    <value>构造方法注入stringSet元素二</value>
                </set>
            </property>
        </bean>
    

    当有大量的Bean需要注入时,使用xml配置文件装配难免会将xml文件写的很长,难于后期维护。
    这时更推荐使用注解装配。
    下一篇文章将记录注解装配的学习笔记与编程案例。

    相关文章

      网友评论

        本文标题:Spring5基础(5)——Spring Bean(装配方式——

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