Spring装配Bean---使用xml配置
声明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/beans
http://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/beans
http://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>
好啦,关于使用xml配置装配Bean的内容就讲到这边,当然有些缺漏,比如没有讲到装配内部Bean,使用SpEL表达式装配属性等,这些有兴趣的可以去了解下。
Spring装配Bean---使用xml配置的更多相关文章
- Spring装配Bean之XML装配bean
在Spring刚出现的时候,XML是描述配置的主要方式,在Spring的名义下,我们创建了无数行XML代码.在一定程度上,Spring成为了XML的同义词. 现在随着强大的自动化配置和Java代码的配 ...
- IoC容器装配Bean(xml配置方式)(Bean的生命周期)
1.Spring管理Bean,实例化Bean对象 三种方式 第一种:使用类构造器实例化(默认无参数) package cn.itcast.spring.initbean; /** * 使用构造方法 实 ...
- Spring实战——无需一行xml配置实现自动化注入
已经想不起来上一次买技术相关的书是什么时候了,一直以来都习惯性的下载一份电子档看看.显然,如果不是基于强烈的需求或强大的动力鞭策下,大部分的书籍也都只是蜻蜓点水,浮光掠影. 就像有位同事说的一样,有些 ...
- Spring 装配Bean
Spring 装配Bean 装配解释: 创建应用对象之间协作关系的的行为通常称为装配(wiring),这也是依赖注入的本质 依赖注入是Spring的基础要素 一 : 使用spring装配Bean基础介 ...
- Spring装配bean
Spring配置的可选方案 Spring提供了如下三种装配机制: (1)在XML中显式配置 (2)在Java中显式配置 (3)隐式的bean发现机制和自动装配 Spring有多种方式可以装配bean, ...
- Spring 装配Bean入门级
装配解释: 创建应用对象之间协作关系的的行为通常称为装配(wiring),这也是依赖注入的本质 依赖注入是Spring的基础要素 一 : 使用spring装配Bean基础介绍 1 :声明Bean B ...
- Spring装配Bean的过程
首先说一个概念:“懒加载” 懒加载:就是我们在spring容器启动的是先不把所有的bean都加载到spring的容器中去,而是在当需要用的时候,才把这个对象实例化到容器中. spring配置文件中be ...
- 【转】spring 装配Bean中构造参数的注入
转载自:http://www.bianceng.cn/Programming/Java/201307/37027.htm spring 装配Bean中构造参数的注入 spring装配bean中还有一种 ...
- Spring的配置文件ApplicationContext.xml配置头文件解析
Spring的配置文件ApplicationContext.xml配置头文件解析 原创 2016年12月16日 14:22:43 标签: spring配置文件 5446 spring中的applica ...
随机推荐
- iOS正则表达式 分类: ios技术 2015-07-14 14:00 35人阅读 评论(0) 收藏
一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...
- Memcached源码分析之memcached.h
//memcached.h //返回在item中data字段key的地址,即把指针指向key #define ITEM_key(item) (((char*)&((item)->data ...
- fastreport代码转
2016-07-08 //打印主从表数据 string file = Application.StartupPath @"\MasterDetail.frx"; rptMaster ...
- vimplugin破解
必较常用的vi插件有:viplugin.Vrapper.eclim Vrapper没有用过,eclim在公司电脑上装,总是不能正常的连接gvim,所以也没有用 Viplugin,常用功能基本都有... ...
- Android组件生命周期(一)
引言 应用程序组件有一个生命周期——一开始Android实例化他们响应意图,直到结束实例被销毁.在这期间,他们有时候处于激活状态,有时候处于非激活状态:对于活动,对用户有时候可见,有时候不可见.组件生 ...
- XML 特殊字符处理和 CDATA
在处理XML数据时,特殊字符要特殊处理,不能和节点字符混淆. 所有 XML 文档中的文本均会被解析器解析. 只有 CDATA 区段(CDATA section)中的文本会被解析器忽略. PCDATA ...
- window 2008+apache2.4.4+php5.5+mysql-5.6.12+phpmyadmin4.0.4.1安装过程(参考他人文章基础上加上自己遇到的问题)
一.window server2008的安装 1.我用U盘安装的,先用UltraISO把server2008刻录到U盘中,过程我搜了一下,帖个地址: http://wenku.baidu.com/vi ...
- js架构设计模式——你对MVC、MVP、MVVM 三种组合模式分别有什么样的理解?
你对MVC.MVP.MVVM 三种组合模式分别有什么样的理解? MVC(Model-View-Controller)MVP(Model-View-Presenter)MVVM(Model-View-V ...
- JQuery操作元素的属性与样式及位置 复制代码
<script type="text/javascript" src="JQuery/jquery-1.5.1.js"></script> ...
- 美丽的Java图表类库
摘要 在使用java做后台站点的开发张,图表和报表功能都是不可或缺 的.本文推荐了8款最精彩实用的Java图表应用,大部分图表应用的功能都类似,主要在于界面的美观性和使用的灵活性上有一点高低. 正文 ...