Spring5基础(5)——Spring Bean(装配方式——xml配置文件装配)
此博客为学习笔记,记录下来怕自己后面学着学着忘记了。 简书内容同步更新,id同名,本文简书链接
在上两篇文章中记录了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) {< 3ff7 /span> 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注入--> <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文件写的很长,难于后期维护。
这时更推荐使用注解装配。
下一篇文章将记录注解装配的学习笔记与编程案例。
- Spring依赖注入(基于XML配置文件和Annotation的方式完成属性装配)
- Spring配置文件applicationContext.xml的两种拆分方式
- Log4j配置文件XML方式和按包路径分开输出日志
- Spring(三):IoC容器装配Bean(xml配置方式和注解方式)
- spring中加载xml配置文件的方式
- spring中读取xml配置文件、获取bean的几种方式
- Spring中加载XML配置文件的6种方式
- Activiti基础教程--01(简介、代码生成Activiti的25张表、Activiti配置文件activiti.cfg.xml生成25张表、在Eclipse上安装Activiti插件)
- Spring Bean的field如果在context xml配置文件中有可能不配置,则需要在Bean中初始化
- spring bean的分散配置(a.properties文件读取的第四种方式)
- web.xml文件基础配置详解
- Spring 加载xml配置文件的方式 ApplicationContext
- xml 方式更新和获取 配置文件 appSettings 节点 解决办法
- spring框架,可以没有spring.xml(即配置<beans>的文件吗?即不使用xml方式配置,而是只使用注解的方式配置
- spring基础-Bean的装配方式(二)基于Annotation的配置
- Spring配置文件applicationContext.xml的两种拆分方式
- Spring中加载XML配置文件的方式
- spring 中加载xml配置文件的方式
- Spring Bean配置方式之二:XML配置
- springAOP基于XML配置文件方式