Spring重点—— IOC 容器中 Bean 的生命周期
一、理解 Bean 的生命周期,对学习 Spring 的整个运行流程有极大的帮助。
二、在 IOC 容器中,Bean 的生命周期由 Spring IOC 容器进行管理。
三、在没有添加后置处理器的情况下 Bean 的生命周期
1.通过构造器或工厂方法创建 Bean 的实例
2.为 Bean 的属性设置值好对其他 Bean 的引用
3.调用 Bean 的初始化方法
4.Bean 可以使用了
5.当容器关闭时,调用 Bean 的销毁方法
*在 Bean 的声明里设置 init-method 和 destroy-method 属性,为 Bean 指定初始化和销毁方法。
例如:
/**
* @author solverpeng
* @create 2016-07-18-20:42
*/
public class Life {
private String lifeName; public void setLifeName(String lifeName) {
System.out.println("setLifeName....");
this.lifeName = lifeName;
} public Life() {
System.out.println("constructor....");
} public void initMethod() {
System.out.println("initMethod....");
} public void destroyMethod() {
System.out.println("destroyMethod....");
} public void targetMethod() {
System.out.println("targetMethod....");
} }
spring-config.xml
<bean class="com.nucsoft.spring.bean.Life" id="life" init-method="initMethod" destroy-method="destroyMethod">
<property name="lifeName" value="myLife"/>
</bean>
Test
@Test
public void test03() {
Life life = ctx.getBean(Life.class);
life.targetMethod();
}
控制台输出:
constructor....
setLifeName....
initMethod....
targetMethod....
四、Bean 后置处理器
1.Bean 后置处理器允许在调用初始化方法前后对 Bean 进行额外的处理。
2.Bean 后置处理器对 IOC 容器里的所有 Bean 实例逐一处理。
3.具体使用:需要实现 BeanPostProcessor 接口,实现 postProcessBeforeInitialization(Object bean, String beanName) 和 postProcessAfterInitialization(Object bean, String beanName) 两个方法。
分别在 初始化方法前后被调用。
五、添加 Bean 后置处理器后的 Bean 的生命周期
1.通过构造器或工厂方法创建 Bean 的实例
2.为 Bean 的属性设置值和对其他 Bean 的引用
3.将 Bean 实例传递给 bean 后置处理器的 postProcessBeforeInitialization() 方法
4.调用 Bean 的初始化方法
5.将 Bean 实例传递给 bean 后置处理器的 postProcessAfterInitialization() 方法。
6.使用 Bean
7.当容器关闭时,调用 Bean 的销毁方法。
例如:
/**
* @author solverpeng
* @create 2016-07-18-20:42
*/
public class Life {
private String lifeName; public void setLifeName(String lifeName) {
System.out.println("setLifeName....");
this.lifeName = lifeName;
} public Life() {
System.out.println("constructor....");
} public void initMethod() {
System.out.println("initMethod....");
} public void destroyMethod() {
System.out.println("destroyMethod....");
} public void targetMethod() {
System.out.println("targetMethod....");
} }
Life.java
/**
* @author solverpeng
* @create 2016-07-18-20:58
*/
public class MyBeanPostProcessor implements BeanPostProcessor{ @Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if(bean instanceof Life) {
System.out.println("life's postProcessBeforeInitialization....");
}
return bean;
} @Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if(bean instanceof Life) {
System.out.println("life's postProcessAfterInitialization....");
}
return bean;
}
}
MyBeanPostProcessor.java
<bean class="com.nucsoft.spring.processor.MyBeanPostProcessor"/> <bean class="com.nucsoft.spring.bean.Life" id="life" init-method="initMethod" destroy-method="destroyMethod">
<property name="lifeName" value="myLife"/>
</bean>
Test
@Test
public void test03() {
Life life = ctx.getBean(Life.class);
life.targetMethod();
}
控制台输出:
constructor....
setLifeName....
life's postProcessBeforeInitialization....
initMethod....
life's postProcessAfterInitialization....
targetMethod....
Spring重点—— IOC 容器中 Bean 的生命周期的更多相关文章
- Spring学习-- IOC 容器中 bean 的生命周期
Spring IOC 容器可以管理 bean 的生命周期 , Spring 允许在 bean 声明周期的特定点执行定制的任务. Spring IOC 容器对 bean 的生命周期进行管理的过程: 通过 ...
- Spring(十二):IOC容器中Bean的生命周期方法
IOC容器中Bean的生命周期方法 1)Spring IOC容器可以管理Bean的声明周期,Spring允许在Bean生命周期的特定点执行定制的任务. 2)Spring IOC容器对Bean的生命周期 ...
- spring IOC 容器中 Bean 的生命周期
IOC 容器中 Bean 的生命周期: 1.通过构造器或工厂方法创建 Bean 实例 2.为 Bean 的属性设置值和对其他 Bean 的引用 3.调用 Bean 后置处理器接口(BeanPostPr ...
- Spring IOC容器中Bean的生命周期
1.IOC容器中Bean的生命周期 构造器函数 设置属性 初始化函数(在Bean配置中 init-method) 使用Bean 结束时关闭容器(在Bean中配置destroy-method) 2.Be ...
- IOC容器中bean的生命周期
一.Bean的生命周期 Spring IOC容器可以管理Bean的生命周期,允许在Bean生命周期的特定点执行定制的任务. Spring IOC容器对Bean的生命周期进行管理的过程如下: (1).通 ...
- [原创]java WEB学习笔记101:Spring学习---Spring Bean配置:IOC容器中bean的声明周期,Bean 后置处理器
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Spring容器中bean的生命周期以及关注spring bean对象的后置处理器:BeanPostProcessor(一个接口)
Spring IOC 容器对 Bean 的生命周期进行管理的过程: 1.通过构造器或工厂方法创建 Bean 实例 2.为 Bean 的属性设置值和对其他 Bean 的引用 3.将 Bean 实例传递给 ...
- 7 -- Spring的基本用法 -- 9...容器中Bean的生命周期
7.9 容器中Bean的生命周期 Spring可以管理singleton作用域的Bean的生命周期,Spring可以精确地知道该Bean何时被创建,何时被初始化完成.容器何时准备销毁该Bean实例. ...
- Spring 容器中 Bean 的生命周期
Spring 容器中 Bean 的生命周期 1. init-method 和 destory-method 方法 Spring 初始化 bean 或销毁 bean 时,有时需要作一些处理工作,因此 s ...
随机推荐
- 关于ScrollerView的一些小心得
在项目开发时遇到一个问题,我在UIViewController上面直接创建了一个UIScrollerView,把UIScrollerView作为一个子视图添加到了UIViewController, 又 ...
- 机器学习编程语言之争,Python 夺魁【转载+整理】
原文地址 en cn 本文内容 表现平平的 MATLAB 貌似强大的 Julia 本身无错的 R 语言 逐渐没落的 Perl 老而弥坚的 Python 我个人很喜欢 Python~ 随着科技的发展,拥 ...
- C#删除字符串最后一个字符的几种方法
字符串:string s = "1,2,3,4,5,"目标:删除最后一个 "," 方法:1.用的最多的是Substring,这个也是我一直用的s = s.Sub ...
- Apache+PHP+Mysql OS X 10.9 Mavericks WEB 服务器配置
在 OS X 10.9 上基本没有什么特别大的差异. 为了新系统用户方便小弟重新整理了一下,因为在 OSX 10.9 下的 Server 软件进行了不少升级,有些步骤不太一样了. 硬件方面就不在详细描 ...
- 【C#|.NET】从细节出发(三) 逻辑层事务和page object模式
一. 业务逻辑层的事务问题 如果你的程序分层清晰并且系统禁用复杂存储过程,那么在DA中的职责比较单一.程序的逻辑通过BLL调用各种不同模块的DA来实现数据操作.如果当需要不同模块在一个事务的时候,问题 ...
- CEF 相关资料
理解WebKit和Chromium: Content API和CEF3 http://blog.csdn.net/milado_nju/article/details/7455373 如何将Chrom ...
- 轻量级容器Docker+微服务+RESTful API
[宗师]李锟(44035001) 10:23:03感觉Docker这样的轻量级容器+微服务+RESTful API三者可以形成一个铁三角.这也代表了PaaS未来的发展方向. [宗师]李锟(440350 ...
- String to Date 多种格式转换
在做Excel数据导入的时候,有些日期文本转换为日期格式时,需要适应多种格式,转换代码如下: static Date multiParse(String strDate){ if (strDate?. ...
- [转]c++流缓冲---rdbuf()
C++标准库封装了一个缓冲区类streambuf,以供输入输出流对象使用.每个标准C++输出输出流对象都包含一个指向streambuf的指针,用 户可以通过调用rdbuf()成员函数获得该指针,从而直 ...
- led显字风扇原理?
神奇的是上面的图案居然会变,十分好奇,求告知原理?? 其实就是依靠转速计算出LED灯变化的频率.这点和老式CRT的显示原理差不多.比如说风扇的转速时60rpm就是每分钟60圈,每秒1圈(当然实际转速快 ...