Spring5基础(5)——Spring Bean(装配方式——xml配置文件装配)

此博客为学习笔记,记录下来怕自己后面学着学着忘记了。 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文件写的很长,难于后期维护。
这时更推荐使用注解装配。
下一篇文章将记录注解装配的学习笔记与编程案例。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,710评论 4 376
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,839评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,295评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,776评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,198评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,074评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,200评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,986评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,733评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,877评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,348评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,675评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,393评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,209评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,212评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,003评论 2 280

推荐阅读更多精彩内容