几张图给你捋明白Spring Bean的生命周期
文章目录
背景
Spring Bean的生命周期绝对是面试中必考的问题,虽然知道是必考,但是有的人就是记不住,下面这几张图帮你搞定Spring Bean的生命周期,想忘都难。
PS:这种回答方式屡试不爽,已经经历过几次大型互联网公司面试的考验!
面试官怎么问?
面试官问的很简单明了:知不知道Spring Bean的生命周期?简单说说。
然后你就开始吧啦吧啦。。。
什么是bean生命周期
顾名思义,就是bean从出生到死亡的一个过程。我愿将bean的生命周期分为四大部分:准备,创建,使用,销毁。面试的时候主要讲准备和创建两个阶段。
准备
准备阶段就是解析xml文件或者注解,生成BeanDefinition,直接上图:

创建
创建BeanFactory
创建好的BeanDefinition对象会被放入BeanFactory容器中,BeanFactory容器的BeanFactoryPostProcessor会在容器创建完成之后对BeanDefinition进行处理,比如一些值的替换操作。

BeanFactory和FactoryBean的区别
BeanFactory创建对象的时候是一套完整的标准化流程,如果想要创建bean对象的话,那么必须要严格遵循以上的步骤,否则的话无法创建对象。
例如,我们现在需要创建一个普通的对象,但是不想走这么复杂的流程,同时想自己定义对象的过程,创建完对象之后,还想将对象交给spring进行管理怎么办?
此时就需要使用FactoryBean接口了,因为在此接口中定义了三个方法:
-
isSingleTon();判断当前对象是否是单例
-
getObjectType();返回当前对象的类型
-
getObject();此方法一般需要自己定义实现,自己完全的控制bean的创建流程,不需简要走上述复杂的流程,最简单的创建方式:直接new一个对象
简单点说,就是我想自己创建对象,但是我还不想走整个复杂的生命周期流程,我还想交给spring管理。
创建对象

实现aware接口

调用init-method

调用BPP的after

获得完成对象
经过以上步骤之后,便可获得完整的对象。
完整流程图

完整文字描述
面试的时候脑海里回忆着流程图,然后再加上这段描述就行了。主要是图记住了就行了。
1.BeanDefinitionReader读取xml信息或者注解信息,生成BeanDefinition对象
2.创建好的BeanDefinition对象会被放入BeanFactory容器中,BeanFactory容器的BeanFactoryPostProcessor会在容器创建完成之后对BeanDefinition进行处理,比如一些值的替换操作。
3.开始创建对象
(1)首先通过反射的方式实例化对象;
(2)使用set方法填充对象属性;
(3)调用一些初始化必要的方法;
(4)如果实现了aware接口,调用aware接口的方法(可以简单描述为什么要实现aware接口);
(5)调用调用BPP的before;
(6)调用调用init-method(可以简单描述init-method做了什么);
(7)调用BPP的after(可以简单描述一下after的时候执行了些什么)。
至此,对象已经创建完成。
4.获得对象,使用对象,销毁对象
如果觉得对你有所帮助,可以关注公众号[dmg_java],回复[00001]领取高清pdf流程图。
SpringBean生命周期详解:图解+实战演示

3551

被折叠的 条评论
为什么被折叠?



