spring_04bean的生命周期
一.前言
spring框架中的bean对象生命周期是面试时常考的问题
往往笔试,面试总喜欢问生命周期的问题
二.spring_bean应用上下文生命周期图:

三.生命周期流程(bean应用上下文):
实例化(当我们的程序加载beans.xml文件),把我们的bean(当前情况:scope=singleton)实例化到内存
调用set方法设置属性
如果你实现了bean名字关注接口(BeanNameAware)则,可以通过方法setBeanName获取id号
如果你实现了 bean工厂关注接口,(BeanFactoryAware),则可以获取工厂BeanFactory
如果你实现了 ApplicationContextAware接口,则调用方法 该方法传递ApplicationContext容器
如果bean 和 一个后置处理器(实现BeanPostProcessor接口的类)关联,则会自动去调用 postProcessBeforeInitialization方法,注意:不用使用该bean实现接口,另外建类实现接口
<!-- 配置实现接口BeanPostProcessor的类:MyBeanPostProcessor,即后置处理器,有点类似filter -->
<bean id="myBeanPostProcessor" class="com.ahd.serviceImpl.MyBeanPostProcessor">
</bean>如果你实现InitializingBean 接口,则会调用 afterPropertiesSet,该接口的实现类作用是初始化bean对象,默认初始化bean对象的方法是afterPropertiesSet,如果想自定义方法,可以在spring配置文件中的bean配置中,添加init-method属性来指定使用什么方法来初始化bean对象,系统默认先执行默认方法afterPropertiesSet,在执行自定义方法
<bean id="validateUser" init-method="myInit" class="com.ahd.serviceImpl.CheckUser1">
<property name="username">
<value>爱华顿g</value>
</property>
<property name="password" value="123456"></property>
</bean>如果bean 和 一个后置处理器关联,则会自动去调用 postProcessAfterInitialization方法
使用我们的bean
容器关闭
可以通过实现DisposableBean 接口来调用方法 destory
可以在<bean destory-method=”fun1”/> 调用定制的销毁方法
<bean id="validateUser" destroy-method="mydestory" class="com.ahd.serviceImpl.CheckUser1">
<property name="username">
<value>爱华顿g</value>
</property>
<property name="password" value="123456"></property>
</bean>
四.测试运行结果

五.总结
小结: 我们实际开发中往往,没有用的这么的过程,常见的是:
1->2->6->10->9->11
如果是使用bean工厂,生命周期比使用应用上下文要略短,没有5,6,8部
问题:通过BeanFactory来获取bean对象,bean的生命周期是否和Applicationcontext 是一样吗?
不是一样的,bean是工厂中创建的生命周期会简单一些:
spring_04bean的生命周期的更多相关文章
- react组件的生命周期
写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...
- 浅谈 Fragment 生命周期
版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...
- C# MVC 5 - 生命周期(应用程序生命周期&请求生命周期)
本文是根据网上的文章总结的. 1.介绍 本文讨论ASP.Net MVC框架MVC的请求生命周期. MVC有两个生命周期,一为应用程序生命周期,二为请求生命周期. 2.应用程序生命周期 应用程序生命周期 ...
- UIViewController生命周期-完整版
一.UIViewController 的生命周期 下面带 (NSObject)的方法是NSObject提供的方法.其他的都是UIViewController 提供的方法. load (NSObje ...
- angular2系列教程(十一)路由嵌套、路由生命周期、matrix URL notation
今天我们要讲的是ng2的路由的第二部分,包括路由嵌套.路由生命周期等知识点. 例子 例子仍然是上节课的例子:
- Spring中Bean的作用域、生命周期
Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...
- Autofac - 生命周期
实例生命周期决定在同一个服务的每个请求的实例是如何共享的. 当请求一个服务的时候,Autofac会返回一个单例 (single instance作用域), 一个新的对象 (per lifetime作用 ...
- 【微信小程序开发•系列文章六】生命周期和路由
这篇文章理论的知识比较多一些,都是个人观点,描述有失妥当的地方希望读者指出. [微信小程序开发•系列文章一]入门 [微信小程序开发•系列文章二]视图层 [微信小程序开发•系列文章三]数据层 [微信小程 ...
- Xamarin.Android活动的生命周期
一.前言 用过Android手机的人一定会发现一种现象,当你把一个应用置于后台后,一段时间之后在打开就会发现应用重新打开了,但是之前的相关的数据却没有丢失.可以看出app的“生命”是掌握在系统手上的, ...
随机推荐
- 我所理解Java集合框架的部分的使用(Collection和Map)
所谓集合,就是和数组类似——一组数据.java中提供了一些处理集合数据的类和接口,以供我们使用. 由于数组的长度固定,处理不定数量的数据比较麻烦,于是就有了集合. 以下是java集合框架(短虚线表示接 ...
- 关于opengl的ActiveTexture以及bindXxx函数的分析
1.GLBindxxx,意思就是,将xxx指定为当前对象,之后的操作都是针对这个xxx进行. 比如,GLBindBuffer(bufferTarget, bufferId),就是指定bufferid和 ...
- yield(),wait(),sleep(),join()
yield(),wait(),sleep(),join()yield()虽然可以让线程由“运行状态”进入到“就绪状态”:但是,它不一定会让其它线程获取CPU执行权(即,其它线程进入到“运行状态”),即 ...
- Redis-04.备份与恢复
RDB(Redis DataBase) 在指定的时间间隔内将内存中的数据集快照写入磁盘,可以理解为Snapshot快照,它恢复时是将快照文件直接读到内存里. Redis会单独创建(fork)一个子进程 ...
- Java 使用 Jxl 实现 Excel 导入导出
开发过程中经常需要用到数据的导入导出功能,之前用的是POI,这次使用JXL,JXL相对于POI来说要轻量简洁许多,在数据量不大的情况下还是非常实用的.这里做一下使用JXL的学习记录.首先需要导入相应的 ...
- Javascript高级编程学习笔记(50)—— DOM2和DOM3(2)样式
样式 在HTML中定义元素的方式有以下三种: 1.link标签引入外部样式表 2.style标签定义嵌入样式 3.通过JS中对style特性定义元素样式(行内样式) “DOM2级样式”围绕上述样式机制 ...
- Android自定义控件总结
自定义控件分类: 1.使用系统控件,实现自定义的效果 2.自己定义一个类继承View ,如textView.ImageView等,通过重写相关的方法来实现新的效果 3.自己定义一个类继承ViewGro ...
- 第78节:Java中的网络编程(上)
第78节:Java中的网络编程(上) 前言 网络编程涉及ip,端口,协议,tcp和udp的了解,和对socket通信的网络细节. 网络编程 OSI开放系统互连 网络编程指IO加网络 TCP/IP模型: ...
- 从前端中的IOC理念理解koa中的app.use()
忙里偷闲,打开平时关注的前端相关的网站,浏览最近最新的前端动态.佼佼者,平凡的我做不到,但还是要争取不做落后者. 前端中的IoC理念,看到这个标题就被吸引了.IoC 理念,不认识呢,点击去一看,果然没 ...
- VS解决-无法打开文件“opencv_ts300d.lib”问题
之前使用过opencv,但不想要时没有正确去卸载,终造成历史问题,每次新建工程编译时都会弹出错误,然后停止运行,解决方法较笨笨 成功打印