Spring之旅第三篇-Spring配置详解
上一篇学习了IOC的概念并初步分析了实现原理,这篇主要学习Spring的配置,话不多说,让我们开始!
一、Bean元素配置
1.1 基本配置
看一个最基本的bean配置
<bean name="hello" class="com.yuanqinnan.test.HelloWorld"></bean>
上面的配置中,我们将bean交给spring管理,看其中属性字段:
class:被管理对象的完整类名
name:被管理对象的名称,可以通过名称获取改对象(可以重复,可以使用特殊字符)
id:与name作用相同(不可以重复,不可以使用特殊字符)
1.2 bean的进阶配置
scope属性
singleton:定义bean的范围为每个Spring容器一个实例(默认值)
prototype:定义bean可以被多次实例化(使用一次就创建一次)
request:定义bean的范围是HTTP请求,只有再使用有web能力的spring上下文时有效。
request:定义bean的范围是HTTP请求,只有再使用有web能力的spring上下文时有效。
global-session:定义bean的范围是全局HTTP会话,只有再portlet上下文中有效。
生命周期属性
init-method:配置一个方法作为生命周期初始化方法.spring会在对象创建之后立即调用.
destory-method:配置一个方法作为生命周期的销毁方法.spring容器在关闭并销毁所有容器中的对象之前调用.
代码如下
<bean id="hello" init-method="getInfo" destroy-method="destory" class="com.yuanqinnan.test.HelloWorld">
</bean>
注意,只有singleton的bean,destory-method才有效
1.3实例化bean的方式
使用类构造器实例化(默认无参数)
<bean id="hello" class="com.yuanqinnan.test.HelloWorld">
</bean>
使用静态工厂方法实例化(简单工厂模式)
public class HellowWorldFactory {
public static HelloWorld createHellowWorld(){
return new HelloWorld();
}
}
<bean name="hello2"
class="com.yuanqinnan.test.HellowWorldFactory"
factory-method="createHellowWorld">
</bean>
使用实例工厂方法实例化(工厂方法模式)
public class HellowWorldFactory2 {
public HelloWorld createHellowWorld(){
return new HelloWorld();
}
}
<bean id="HellowWorldFactory2" class="com.yuanqinnan.test.HellowWorldFactory2"/>
<bean id="hello3" factory-bean="HellowWorldFactory2" factory-method="createHellowWorld" />
1.4 spring的分模块配置
spring 允许多个文件进行配置,可以按照模块来进行配置
<import resource="applicationContext2.xml"></import>
二、spring 属性注入
2.1 set方法注入
<bean>元素的<property>子元素指明了使用它们的set方法来注入,可以使用property的value属性来注入简单类型
<bean name="user" class="com.yuanqinnan.test.User">
<!--值类型注入-->
<property name="age" value="18"></property>
<property name="name" value="tom"></property>
<!-- 引用类型注入-->
<property name="car" ref="car"></property>
</bean>
<bean name="car" class="com.yuanqinnan.test.Car">
<property name="color" value="blue"></property>
</bean>
User类与Car类代码就不贴了,应该是可以看得懂。
2.2 构造函数注入
使用constructor-arg来完成构造方法的注入,注入的方式和setter方式注入相同。 可以通过type属性,控制注入的类型 可以通过index属性,控制注入的顺序 可以通过name属性,控制注入的名字
<bean name="user2" class="com.yuanqinnan.test.User">
<constructor-arg name="name" index="0" type="java.lang.String" value="lucy"></constructor-arg>
<constructor-arg name="age" index="1" type="java.lang.Integer" value="20"></constructor-arg>
<constructor-arg name="car" ref="car"></constructor-arg>
</bean>
2.3 spel注入
<bean name="user3" class="com.yuanqinnan.test.User">
<property name="name" value="#{user.name}"></property>
<property name="age" value="#{user2.age}"></property>
<!-- 引用类型注入 为car属性注入下方配置的car对象-->
<property name="car" ref="car"></property>
</bean>
三、复杂类型注入
3.1 数组
<property name="arr">
<array>
<value>tom</value>
<value>lucy</value>
<ref bean="user2"></ref>
</array>
</property>
3.2 List
<property name="list">
<list>
<value>tom</value>
<value>lucy</value>
<ref bean="user2"></ref>
</list>
</property>
3.3 Set
<property name="set">
<set>
<value>com.jbdc.mysql.Driver</value>
<value>root</value>
<ref bean="user"/>
</set>
</property>
3.4 Map
<property name="map">
<map>
<entry key="url" value=""></entry>
<entry key="user" value-ref="user"></entry>
<entry key-ref="user3" value-ref="user2"></entry>
</map>
</property>
3.5 Properties
<property name="prop">
<props>
<prop key="url">com.jbdc.mysql.Driver</prop>
<prop key="userName">root</prop>
<prop key="password">1234</prop>
</props>
</property>
总结:以上是spring的配置详解,都是通过XML装配,下一篇我们学习注解配置
Spring之旅第三篇-Spring配置详解的更多相关文章
- Spring之旅第四篇-注解配置详解
一.引言 最近因为找工作,导致很长时间没有更新,找工作的时候你会明白浪费的时间后面都是要还的,现在的每一点努力,将来也会给你回报的,但行好事,莫问前程!努力总不会有错的. 上一篇Spring的配置博客 ...
- Spring MVC配置文件的三个常用配置详解
转自:http://www.cnblogs.com/benwu/articles/5162614.html Spring MVC项目中通常会有二个配置文件,sprng-servlet.xml和appl ...
- spring基于通用Dao的多数据源配置详解【ds1】
spring基于通用Dao的多数据源配置详解 有时候在一个项目中会连接多个数据库,需要在spring中配置多个数据源,最近就遇到了这个问题,由于我的项目之前是基于通用Dao的,配置的时候问题不断,这种 ...
- 从Spring到SpringBoot构建WEB MVC核心配置详解
目录 理解Spring WEB MVC架构的演变 认识Spring WEB MVC 传统时代的Spring WEB MVC 新时代Spring WEB MVC SpringBoot简化WEB MVC开 ...
- struts2系列(三):struts2配置详解
原文链接:http://www.cnblogs.com/fmricky/archive/2010/05/20/1740479.html 1.<include> 利用include标签,可以 ...
- SpringBoot + Spring Security 基本使用及个性化登录配置详解
Spring Security 基本介绍 这里就不对Spring Security进行过多的介绍了,具体的可以参考官方文档 我就只说下SpringSecurity核心功能: 认证(你是谁) 授权(你能 ...
- spring框架中AOP思想与各种配置详解
Spring中提供两种AOP支持: 1.基于代理的经典AOP 2.Aspectj注解配置AOP 首先我们先了解什么是AOP,AOP(Aspect Oriented Programming ...
- Http请求中Content-Type讲解以及在Spring MVC注解中produce和consumes配置详解
原文地址: https://blog.csdn.net/shinebar/article/details/54408020 引言: 在Http请求中,我们每天都在使用Content-type来指定不 ...
- 第三章 Struts2配置详解
3.1 Struts2执行过程 1.获取Struts2资源 2.在应用程序中导入Struts2的类库 3.在web.xml中配置StrutsPrepareAndExecuteFilt ...
随机推荐
- nodejs中处理回调函数的异常
如果是使用nodejs+express3这个经典的组合,那么有一种很方面的处理回调函数异常的方法: 1. 安装模块:express-domain-middleware 2. 加入如下的代码: app. ...
- Oracle解锁scott账号
在安装Oracle的最后一步,有一个口令管理的操作,当时忘了给scott账号解锁了(Oracle为程序测试提供的一个普通账户,口令管理中可以对数据库用户设置密码,默认是锁定的).现在想给scott这个 ...
- 从group by 展开去
一.概念 "Group By"从字面意义上理解就是根据"By"指定的规则对数据进行分组,所谓的分组就是将一个"数据集"划分成若干个" ...
- Spring Boot自动配置源码解析(基于Spring Boot 2.0.2.RELEASE)
在Spring Boot官方介绍中,首一段话是这样的(如下图).我们可以大概了解到其所表达的含义:我们可以利用Spring Boot写很少的配置来创建一个非常方便的基于Spring整合第三方类库的单体 ...
- bzoj 1210 [HNOI2004] 邮递员 插头dp
插头dp板子题?? 搞了我一晚上,还tm全是抄的标程.. 还有高精,哈希混入,还是我比较弱,orz各种dalao 有不明白的可以去看原论文.. #include<cstdio> #incl ...
- Applet 应用程序进行数字签名,对系统文件进行读写操作
转:http://www.iteye.com/topic/154531 最近在研究applet,打算使用applet来开发一个上传文件上传控件,之前因为一直觉得applet的沙箱控制导致applet不 ...
- MyBatis新手教程(一)
MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache 迁移到了 google,并改名为MyBatis,2013年迁移到Github. MyBatis是一个优秀的持 ...
- PHP过滤数组中的空值
php对数组的操作已经很完善了,提供给我们很多内置函数用以操作数组,其实可以用array_filter函数对PHP数组中的控制进行过滤 array_filter() 函数用回调函数过滤数组中的值.该函 ...
- java实现开根号算法
public static void main(String[] args) { long start = System.currentTimeMillis(); double target=9876 ...
- hashCode()方法以及集合中Set的一些总结
一.前言 本篇文章没有什么主题,就是一些零散点的总结.周末没事看了几道蚂蚁金服的面试题,其中有好几道都是特别简单的,基础性的题目,就是我们平时用到的,但是发现要是完全说出来还是有一些不清楚的地方,所以 ...