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/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>
Spring装配Bean---使用xml配置相关推荐
- Spring实战——无需一行xml配置实现自动化注入
已经想不起来上一次买技术相关的书是什么时候了,一直以来都习惯性的下载一份电子档看看.显然,如果不是基于强烈的需求或强大的动力鞭策下,大部分的书籍也都只是蜻蜓点水,浮光掠影. 就像有位同事说的一样,有些 ...
- 传智播客学习之Spring——装配Bean
昨天和大家分享了Spring的起源和作用,以及它所运用到得几大模块,算是基本对Spring有了一个整体的认识,并通过了一个小实例让我们体会了以下spring,今天详细和大家分享一下装配Bean的相关问 ...
- Spring装配Bean的过程
首先说一个概念:"懒加载" 懒加载:就是我们在spring容器启动的是先不把所有的bean都加载到spring的容器中去,而是在当需要用的时候,才把这个对象实例化到容器中. spr ...
- 在eclipse中关于Spring和Hibernate 的XML配置如何提示类的包路径的办法
转载自 在eclipse中关于Spring和Hibernate 的XML配置如何提示类的包路径的办法 我们在配Spring 或者Hibernate 配置文件的时候,发觉在配置类路径的时候,在双引号下 ...
- spring三: 装配bean( 在xml中进行显式配置, 在java中进行显式配置)
ApplicationContext ac = new AnnotationConfigApplicationContext(SpringConfiguration.class); SpringCon ...
- Spring学习笔记:2(IOC装配Bean之xml方式)
xml配置方式装配Bean 本文借鉴于:https://www.cnblogs.com/qdhxhz/p/6511887.html Spring框架Bean实例化的方式提供了三种方式实例化Bean 构 ...
- Spring装配bean的三种方法:自动化装配,java代码装配,XML装配及它们的混合使用
一.自动化装配 首先,把可能被装配的类声明为组件类,告知spring要为这个类创建bean如: import org.springframework.stereotype.Component;@ Co ...
- spring装配Bean过程
主要流程: 1.读取配置文件 2.实例化bean和填充bean属性 这个粗略的流程感觉更像是一个需求,有了这个需求,那么spring内部是怎么处理的呢? 我们知道spring的两个核心接口BeanFa ...
- 记下来 Spring 装配 Bean 的三种方式
ps:拿笔记一下,面试可能会考.依赖注入DI和面向切面编程AOP是Spring框架最核心的部分.这次主要是总结依赖注入的bean的装配方式. 前言 什么是依赖注入呢?也可以称为控制反转,简单的来说,一 ...
最新文章
- 《C# WinForM 实践开发教程》案例×××(2)
- @RequestBody, @ResponseBody 注解详解
- 某系统响应时间慢TPS低性能瓶颈调优过程
- 作为我的第一篇csdn博客吧
- 推荐一款好用的android反编译工具
- JBoss AS 7:自定义登录模块
- php数据库操作类的调用优化,PHP PDO优化数据库操作类 多数据库驱动类
- 前端学习(2658):vue3 computed
- mariadb不能导入与mysql可以,mysql/mariadb知识点总结(12):insert语句总结
- 胡寿松自动控制原理第7版笔记和课后答案
- linux 字符 拨号上网,LINUX下用ADSL拨号上网
- pygame游戏之旅2:创建游戏窗口界面
- python计算ks
- 吕本富:从平台经济到平台经济学
- 理解COCO的评价指标:AP,AP50,AP70,mAP,AP[.50:.05:.95]
- 参会指南!POW'ER 2020上海峰会完整议程周边活动
- # 2014年蓝桥杯真题CC++B组
- Spring5利用视图解析器生成Excel文件
- 阿里开源的诊断神器(Arthas)自带IDEA插件真香!
- 重磅!陀螺财经发布2019「年度影响力专栏」链游、矿业、科普等榜
热门文章
- 【C++】智能指针(一)入门
- 【linux命令】readelf工具中英文说明
- 推荐本人微博及浅谈发博原则
- 毕业季:理想很丰满,现实也可以很丰满!
- spring 数组中随机取几个_别给孩子取这三种名字!截止年末,名字中的这几个字已经烂大街了...
- opencv处理dicom图像_图像处理|opencv| 利用opencv把照片变换成素描风格
- 三菱plc232数据线驱动下载_三菱PLC与西门子PLC有什么区别?
- Java学习总结:18
- Java项目:嘟嘟校园一卡通系统(java+JSP+Servlet+html+css+JavaScript+JQuery+Ajax+mysql)
- 参数等效模型可以用于_等效媒质理论(介电参数反演)