JavaEE

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

2019-07-21  本文已影响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配置文件装配
之前在
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文件写的很长,难于后期维护。
这时更推荐使用注解装配。
下一篇文章将记录注解装配的学习笔记与编程案例。

上一篇下一篇

猜你喜欢

热点阅读