声明Bean

Spring配置文件的根元素是<beans>.

在<beans>元素内,你可以放所有的Spring配置信息,包括<bean>元素的声明.

除了Beans命名空间,Spring的核心框架总共自带了10个命名空间配置:

 命名空间 用途
 aop     为声明切面以及将@AspectJ注解的类代理为Spring切面提供了配置元素
 beans     支持声明Bean和装配Bean,是Spring最核心也是最原始的命名空间
 context 为配置Spring应用上下文提供了配置元素,包括自动检测和装配Bean,注入非Spring直接管理的对象 
jee  提供了与Java EE API的集成,例如JNDI和EJB
 jms 为声明消息驱动的POJO提供了配置元素    
lang  支持配置由Groovy、JRuby、BeanShell等脚本实现的Bean    
 mvc 启用SpringMVC的能力,例如面向注解的控制器、视图控制器和拦截器    
oxm  支持Spring的对象到xml配置的映射    
tx  提供声明式事物配置    
 util 提供各种各样的工具类元素,包括把集合配置为Bean,支持属性占位符元素    

xml结构如下:

<?xml version="1.0" encoding="UTF-8" ?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:p="http://www.springframework.org/schema/p"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd"><bean id="" class="">......</bean><bean id="" class="">......</bean></beans>

基于构造函数注入

使用<constructor-arg>元素。如果不配置<constructor-arg>元素,那么Spring将使用默认的构造函数。

<!-- 诗 --><bean id="poem" class="com.wjx.betalot.impl.Sonnet"><constructor-arg value="Sonnet poem"></constructor-arg></bean><!-- 诗人 --><bean id="poet" class="com.wjx.betalot.impl.Joe"><constructor-arg ref="poem"></constructor-arg></bean>

通过工厂方法创建Bean

<bean>元素有一个factory-method属性,允许我们调用一个指定的静态方法,从而代替构造函数来创建一个类的实例

<bean id="stage"  class="com.wjx.betalot.impl.Stage" factory-method="getInstance" />

配置Bean的作用域

<bean>元素有一个scope属性,允许我们指定Bean的作用域,Bean的作用域主要有一下几种,默作用域为单例singleton

作用域 定义
singleton 在每一个Spring容器中,一个Bean定义只有一个对象实例(默认)
prototype 允许Bean的定义可以被实例化任意次(每次调用都创建一个实例)
request 在一次HTTP请求中,每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文(例如SpringMVC)中才有效
session 在一个HTTP Session中,每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文(例如SpringMVC)中才有效
global-session 在一个全局HTTP Session中,每个Bean定义对应一个实例。该作用域仅在Portlet上下文中才有效
<bean id="poem" class="com.wjx.betalot.impl.Sonnet" scope="prototype">

配置Bean的初始化和销毁方法

Spring提供了Bean生命周期的钩子方法。

为Bean定义初始化和销毁操作,只需要使用init-method和destroy-method参数来配置<bean>元素。init-method属性指定了在初始化Bean时要调用的方法;destroy-method属性指定了Bean从容器移除之前要调用的方法。

<!-- 观众看表演,表演开始前鼓掌欢迎,表演结束鼓掌 -->
<bean id="auditorium" class="com.wjx.betalot.impl.Auditorium" init-method="applause" destroy-method="applause"/>

使用<beans>元素的default-init-method和default-destroy-method属性配置所有<bean>共同默认的初始化方法和销毁方法

<?xml version="1.0" encoding="UTF-8"?>   <beans xmlns="http://www.springframework.org/schema/beans"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"    default-init-method="applause"   default-destroy-method="applause"> ...
</beans>

注入Bean的属性

使用<property>元素。value填充基础类型值,ref填充<bean>引用

<!-- 诗 --><bean id="poem" class="com.wjx.betalot.impl.Sonnet"><property name="lines" value="Sonnet poem"></property></bean><!-- 诗人 --><bean id="poet" class="com.wjx.betalot.impl.Joe"><property name="poem" ref="poem"></property ></bean>

装配集合属性,Spring提供了4种类型的集合配置属性 <list> <set> <map> <props>

<bean id="poeticJuggler" class="com.wjx.betalot.performer.impl.PoeticJuggler"><property name="poemsMap"><map><entry key="POEM1" value-ref="poem1"/><entry key="POEM2" value-ref="poem2"/><entry key="POEM3" value-ref="poem3"/></map></property><property name="poemProperties"><props><prop key="poem3">POEM3</prop><prop key="poem2">POEM2</prop><prop key="poem1">POEM1</prop></props></property><property name="poemList"><list><ref bean="poem1"/><ref bean="poem2"/><ref bean="poem3"/></list></property><property name="poemSet"><set><ref bean="poem1"/><ref bean="poem2"/><ref bean="poem3"/></set></property></bean>

装配空值

<property name="someNonNullProperty"><null/></property>

除了<property>元素配置属性外,使用spring的命名空间p也可以装配属性,当然你得在<beans>元素中先引入命名空间p

<?xml version="1.0" encoding="UTF-8" ?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:p="http://www.springframework.org/schema/p"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsd"><bean id="poem" class="com.wjx.betalot.impl.Sonnet" p:line="Sonnet"/><bean id="poet" class="com.wjx.betalot.impl.Joe" p:poem-ref="poem"/></beans>
本文转自 sshpp 51CTO博客,原文链接:http://blog.51cto.com/12902932/1927610,如需转载请自行联系原作者

Spring装配Bean---使用xml配置相关推荐

  1. Spring实战——无需一行xml配置实现自动化注入

    已经想不起来上一次买技术相关的书是什么时候了,一直以来都习惯性的下载一份电子档看看.显然,如果不是基于强烈的需求或强大的动力鞭策下,大部分的书籍也都只是蜻蜓点水,浮光掠影. 就像有位同事说的一样,有些 ...

  2. 传智播客学习之Spring——装配Bean

    昨天和大家分享了Spring的起源和作用,以及它所运用到得几大模块,算是基本对Spring有了一个整体的认识,并通过了一个小实例让我们体会了以下spring,今天详细和大家分享一下装配Bean的相关问 ...

  3. Spring装配Bean的过程

    首先说一个概念:"懒加载" 懒加载:就是我们在spring容器启动的是先不把所有的bean都加载到spring的容器中去,而是在当需要用的时候,才把这个对象实例化到容器中. spr ...

  4. 在eclipse中关于Spring和Hibernate 的XML配置如何提示类的包路径的办法

    转载自  在eclipse中关于Spring和Hibernate 的XML配置如何提示类的包路径的办法 我们在配Spring 或者Hibernate 配置文件的时候,发觉在配置类路径的时候,在双引号下 ...

  5. spring三: 装配bean( 在xml中进行显式配置, 在java中进行显式配置)

    ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfiguration.class); SpringCon ...

  6. Spring学习笔记:2(IOC装配Bean之xml方式)

    xml配置方式装配Bean 本文借鉴于:https://www.cnblogs.com/qdhxhz/p/6511887.html Spring框架Bean实例化的方式提供了三种方式实例化Bean 构 ...

  7. Spring装配bean的三种方法:自动化装配,java代码装配,XML装配及它们的混合使用

    一.自动化装配 首先,把可能被装配的类声明为组件类,告知spring要为这个类创建bean如: import org.springframework.stereotype.Component;@ Co ...

  8. spring装配Bean过程

    主要流程: 1.读取配置文件 2.实例化bean和填充bean属性 这个粗略的流程感觉更像是一个需求,有了这个需求,那么spring内部是怎么处理的呢? 我们知道spring的两个核心接口BeanFa ...

  9. 记下来 Spring 装配 Bean 的三种方式

    ps:拿笔记一下,面试可能会考.依赖注入DI和面向切面编程AOP是Spring框架最核心的部分.这次主要是总结依赖注入的bean的装配方式. 前言 什么是依赖注入呢?也可以称为控制反转,简单的来说,一 ...

最新文章

  1. 《C# WinForM 实践开发教程》案例×××(2)
  2. @RequestBody, @ResponseBody 注解详解
  3. 某系统响应时间慢TPS低性能瓶颈调优过程
  4. 作为我的第一篇csdn博客吧
  5. 推荐一款好用的android反编译工具
  6. JBoss AS 7:自定义登录模块
  7. php数据库操作类的调用优化,PHP PDO优化数据库操作类 多数据库驱动类
  8. 前端学习(2658):vue3 computed
  9. mariadb不能导入与mysql可以,mysql/mariadb知识点总结(12):insert语句总结
  10. 胡寿松自动控制原理第7版笔记和课后答案
  11. linux 字符 拨号上网,LINUX下用ADSL拨号上网
  12. pygame游戏之旅2:创建游戏窗口界面
  13. python计算ks
  14. 吕本富:从平台经济到平台经济学
  15. 理解COCO的评价指标:AP,AP50,AP70,mAP,AP[.50:.05:.95]
  16. 参会指南!POW'ER 2020上海峰会完整议程周边活动
  17. # 2014年蓝桥杯真题CC++B组
  18. Spring5利用视图解析器生成Excel文件
  19. 阿里开源的诊断神器(Arthas)自带IDEA插件真香!
  20. 重磅!陀螺财经发布2019「年度影响力专栏」链游、矿业、科普等榜

热门文章

  1. 【C++】智能指针(一)入门
  2. 【linux命令】readelf工具中英文说明
  3. 推荐本人微博及浅谈发博原则
  4. 毕业季:理想很丰满,现实也可以很丰满!
  5. spring 数组中随机取几个_别给孩子取这三种名字!截止年末,名字中的这几个字已经烂大街了...
  6. opencv处理dicom图像_图像处理|opencv| 利用opencv把照片变换成素描风格
  7. 三菱plc232数据线驱动下载_三菱PLC与西门子PLC有什么区别?
  8. Java学习总结:18
  9. Java项目:嘟嘟校园一卡通系统(java+JSP+Servlet+html+css+JavaScript+JQuery+Ajax+mysql)
  10. 参数等效模型可以用于_等效媒质理论(介电参数反演)