几张图给你说明白Spring Bean的生命周期

SpringBean生命周期详解:图解+实战演示

几张图给你捋明白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流程图。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值