上一篇学习了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的方式

  1. 使用类构造器实例化(默认无参数)

<bean id="hello" class="com.yuanqinnan.test.HelloWorld">
</bean>
  1. 使用静态工厂方法实例化(简单工厂模式)

public class HellowWorldFactory {
public static HelloWorld createHellowWorld(){
return new HelloWorld();
}
}
 <bean name="hello2"
class="com.yuanqinnan.test.HellowWorldFactory"
factory-method="createHellowWorld">
</bean>
  1. 使用实例工厂方法实例化(工厂方法模式)

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配置详解的更多相关文章

  1. Spring之旅第四篇-注解配置详解

    一.引言 最近因为找工作,导致很长时间没有更新,找工作的时候你会明白浪费的时间后面都是要还的,现在的每一点努力,将来也会给你回报的,但行好事,莫问前程!努力总不会有错的. 上一篇Spring的配置博客 ...

  2. Spring MVC配置文件的三个常用配置详解

    转自:http://www.cnblogs.com/benwu/articles/5162614.html Spring MVC项目中通常会有二个配置文件,sprng-servlet.xml和appl ...

  3. spring基于通用Dao的多数据源配置详解【ds1】

    spring基于通用Dao的多数据源配置详解 有时候在一个项目中会连接多个数据库,需要在spring中配置多个数据源,最近就遇到了这个问题,由于我的项目之前是基于通用Dao的,配置的时候问题不断,这种 ...

  4. 从Spring到SpringBoot构建WEB MVC核心配置详解

    目录 理解Spring WEB MVC架构的演变 认识Spring WEB MVC 传统时代的Spring WEB MVC 新时代Spring WEB MVC SpringBoot简化WEB MVC开 ...

  5. struts2系列(三):struts2配置详解

    原文链接:http://www.cnblogs.com/fmricky/archive/2010/05/20/1740479.html 1.<include> 利用include标签,可以 ...

  6. SpringBoot + Spring Security 基本使用及个性化登录配置详解

    Spring Security 基本介绍 这里就不对Spring Security进行过多的介绍了,具体的可以参考官方文档 我就只说下SpringSecurity核心功能: 认证(你是谁) 授权(你能 ...

  7. spring框架中AOP思想与各种配置详解

    Spring中提供两种AOP支持:   1.基于代理的经典AOP   2.Aspectj注解配置AOP    首先我们先了解什么是AOP,AOP(Aspect Oriented Programming ...

  8. Http请求中Content-Type讲解以及在Spring MVC注解中produce和consumes配置详解

    原文地址:  https://blog.csdn.net/shinebar/article/details/54408020 引言: 在Http请求中,我们每天都在使用Content-type来指定不 ...

  9. 第三章 Struts2配置详解

    3.1 Struts2执行过程    1.获取Struts2资源    2.在应用程序中导入Struts2的类库    3.在web.xml中配置StrutsPrepareAndExecuteFilt ...

随机推荐

  1. traceback模块

    traceback模块被用来跟踪异常返回信息 如下例所示: import traceback try: raise SyntaxError, "traceback test" ex ...

  2. BZOJ_1100_[POI2007]对称轴osi_KMP+计算几何

    BZOJ_1100_[POI2007]对称轴osi_KMP+计算几何 Description FGD小朋友——一个闻名遐迩的年轻数学家——有一个小MM,yours.FGD小朋友非常喜欢他的MM,所以他 ...

  3. Android圆形头像,拍照后“无法加载此图片”的问题解决(适配Android7.0)

    Feature: 点击选择拍照或者打开相册,选取图片进行裁剪最后设置为圆形头像. Problem: 拍好照片,点击裁剪,弹Toast"无法加载此图片". Solution: 在裁剪 ...

  4. 记一次产品需求:图片等比缩放和CSS自适应布局16:9

    前言 前阵子,产品跑过来问我现有的模板中没有图片模板,需要添加一个图片模板:然而,他要求图片在展示区最好能够实现随着窗口的变化而自动按图片比例等比缩放,并且居中展示图片.我当时想着,抛开技术实现层面, ...

  5. Scala 枚举介绍及深入应用

    本文详细地总结了Scala枚举的几种实现方式,对我们更好地进行函数式编程有很好地指导和帮助. Scala 枚举示例和特性 枚举(Enumerations)是一种语言特性,对于建模有限的实体集来说特别有 ...

  6. 分布式系统关注点(17)——先写DB还是「缓存」?

    如果第二次看到我的文章,欢迎右侧扫码订阅我哟~ 

  7. 说说new 和 malloc()

    熟悉c++的朋友应该都知道,c++提供给了程序员与硬件打交道的可能性,比如说内存管理.一个高水平的c++程序员可以将c++程序的性能优化到极致,榨干硬件资源.而现在我想说说与内存管理有关的new 和 ...

  8. Spring Boot 入门教程 | 图文讲解

    目录 一.Spring Boot 是什么 二.为什么要使用 Spring Boot 三.快速入门 3.1 创建 Spring Boot 项目 3.2 项目结构 3.3 引入 Web 依赖 3.4 编写 ...

  9. Vue 进阶之路(七)

    之前的文章我们对 vue 的列表输出做了介绍,本章我们来看一下 vue 的组件 component. <!DOCTYPE html> <html lang="en" ...

  10. c#批量抓取免费代理并验证有效性

    之前看到某公司的官网的文章的浏览量刷新一次网页就会增加一次,给人的感觉不太好,一个公司的官网给人如此直白的漏洞,我批量发起请求的时候发现页面打开都报错,100多人的公司的官网文章刷新一次你给我看这个, ...