码迷,mamicode.com
首页 > 移动开发 > 详细

好记性不如烂笔头86-spring3学习(7)-ApplicationContext中bean的生命周期

时间:2015-03-19 08:52:21      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:beanfactory   applicationcontext   bean   spring   好记性不如烂笔头   

如果使用ApplicationContext来生成、管理Bean, 一个Bean从建立到销毁,会历经几个执行阶段。
我个人理解一般的bean的生命周期主要包括:建立,初始化,使用阶段,销毁四个核心阶段。使用ApplicationContext 和BeanFactory对bean的生命周期来看,宏观上基本相同,微观上有一些差异。

如果使用ApplicationContext来生成并管理Bean,在执行BeanfactoryAware的
setBeanFactory()阶段之后,若Bean类上有实现org.springframework.context.ApplicationContextAware接口,则执行setApplicationContext()方法,接着才继续进行BeanPostProcessors的processBeforeInitialization()及之后的流程。

在非WEB应用程序中,若想在关闭容器之前调用Bean定义文件中Singleton的Bean所设置的destroy方法,则可以执行AbstractApplicationContext的registerShutdownHook()方法,并向JVM注册相关方法,例如:
AbstractApplicationContext context = new ClassPathXmlApplicationContext
(“beans-config.xml”);
context.registerShutdownHook();
//执行应用程序

在应用程序结束之前,Bean定义文件上所设置的destroy方法将会被调用执行。
如果使用BeanFactory,只有在使用getBean()方法真正取得Bean时,才会做实例化的动作
如果使用ApplicationContext,则会预先针对Bean定义文件的内容,将所有的Bean实例化。如果这不是你想要的,可以在上设置”lazy-init”属性为”true,ApplicationContext 就不会在启动的时候针对该Bean作实例化的动作,例如:

<bean id="some" class="org.bearfly.bean.Some lazy-init="true"></bean>

好记性不如烂笔头86-spring3学习(7)-ApplicationContext中bean的生命周期

标签:beanfactory   applicationcontext   bean   spring   好记性不如烂笔头   

原文地址:http://blog.csdn.net/ffm83/article/details/44449731

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!