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的“生命”是掌握在系统手上的, ...
随机推荐
- NSInvalidArgumentException这个到底是什么意思,我到网上查了下,每个的错误都不同。
我几乎把所有的东西都注释了,但还是崩了 #import "ViewController.h" //#import "WeiBo.h" @interface Vi ...
- macOS终端开启TAB键自动补全功能(不区分大小写)
1.在当前用户根目录(~)下,修改~/.inputrc这个文件(如果文件不存在,则新建该文件),文件内容如下: set show-all-if-ambiguous on set completion- ...
- 深入理解JVM(二)——内存模型、可见性、指令重排序
上一篇我们介绍了JVM的基本运行流程以及内存结构,对JVM有了初步的认识,这篇文章我们将根据JVM的内存模型探索java当中变量的可见性以及不同的java指令在并发时可能发生的指令重排序的情况. 内存 ...
- 背水一战 Windows 10 (96) - 选取器: ContactPicker
[源码下载] 背水一战 Windows 10 (96) - 选取器: ContactPicker 作者:webabcd 介绍背水一战 Windows 10 之 选取器 ContactPicker(联系 ...
- 包建强的培训课程(14):Android与ReactNative
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- C++内存读写例子
/************************************************************* // 声明头文件 #ifndef LyShark__h #define L ...
- 谈谈Java中的代理模式
首先来看一下代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用, 其特征是代理类与 ...
- 第80节:Java中的MVC设计模式
第80节:Java中的MVC设计模式 前言 了解java中的mvc模式.复习以及回顾! 事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn ...
- 第35节:Java面向对象中的多线程
Java面向对象中的多线程 多线程 在Java面向对象中的多线程中,要理解多线程的知识点,首先要掌握什么是进程,什么是线程?为什么有多线程呢?多线程存在的意义有什么什么呢?线程的创建方式又有哪些?以及 ...
- 《http权威指南》读书笔记17
概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...