假设使用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>

最新文章

  1. Sql Server函数全解&lt;三&gt;数据类型转换函数和文本图像函数
  2. Java 静态变量,常量和方法
  3. WebSocket通信协议
  4. HANA Studio中修改默认查询结果只显示1000行
  5. poj1279.Inlay Cutters(模拟 + 枚举)
  6. 二级c程序设计题(2)
  7. MyCat 主键ID自增长配置
  8. var d = document.getElementById 错误
  9. maven 执行mvn package/clean命令出错
  10. 【转载】关于api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案
  11. StackExchange.Redis学习笔记(五) 发布和订阅
  12. WebApi系列(从.Net FrameWork 到 .Net Core)
  13. 开发更健壮python程序的一些工具
  14. UVA 508 Morse Mismatches JAVA
  15. Java编程的逻辑 (83) - 并发总结
  16. 七、持久层框架(MyBatis)
  17. IO流中File文件最常用和直接的用法
  18. js中两种for循环的使用
  19. jQuery EasyUI API 中文文档 - 消息框(Messager)
  20. hdu 5652 India and China Origins(二分+bfs || 并查集)BestCoder Round #77 (div.2)

热门文章

  1. jvm 虚拟机的组成部分
  2. Docker可视化管理工具对比(DockerUI、Shipyard、Rancher、Portainer)
  3. ASP.NET-属性与过滤器
  4. 基于ORA-12170 TNS 连接超时解决办法详解
  5. JAVA设计模式之【职责链模式】
  6. iOS学习必须了解的七大手势
  7. Laravel-HTTP-验证
  8. 如何实现内核旁路(Kernel bypass)?
  9. 你不知道的JavaScript(一)数据类型
  10. sublime text3前端常用插件