Spring Bean的生命周期全过程

简介: 大家好,我是被编程耽误的文艺Tom。今天能给大家介绍一下Spring Bean生命周期全过程,这道题呢也是大厂高频面试题。接下来我给大家做一个详细的分析和解答。

Spring Bean的生命周期全过程


大家好,我是被编程耽误的文艺Tom。今天能给大家介绍一下Spring Bean生命周期全过程,这道题呢也是大厂高频面试题。接下来我给大家做一个详细的分析和解答。


Spring生命周期全过程大致分为五个阶段:创建前准备阶段、创建实例阶段、依赖注入阶段、

容器缓存阶段和销毁实例阶段。


这张图呢展示了Spring Bean生命周期完整流程,其中对每个阶段的具体操作做了详细介绍。下面我们来分析一下每个阶段的细节。

先来看第一阶段。


1、创建前准备阶段

db8ca8af69b4452a800fe75e4df05d57.png

这个阶段主要是在开始Bean加载之前,从Spring上下文和相关配置中解析并查找Bean有关的配置内容,

比如init-method-容器在初始化bean时调用的方法、destory-method,容器在销毁Bean时调用的方法。

以及,BeanFactoryPostProcessor这类的bean加载过程中的前置和后置处理。


这些类或者配置其实是Spring提供给开发者,用来实现Bean加载过程中的扩展机制,在很多和Spring集成的中间件经常使用,比如Dubbo。


2、创建实例阶段

88460d6dc3af46f8953f0efba8c55a4f.png

这个阶段主要是通过反射来创建Bean的实例对象,并且扫描和解析Bean声明的一些属性。


3、依赖注入阶段

88e2085b26624ee995c64690f759266d.png

在这个阶段,会检测被实例化的Bean是否存在其他依赖,如果存在其他依赖,1就需要对这些被依赖Bean进行注入。比如通过读取


@Autowired、@Setter等依赖注入的配置。

在这个阶段还会触发一些扩展的调用,比如常见的扩展类:BeanPostProcessors(用来实现Bean初始化前后的回调)、


InitializingBean类(这个类有一个afterPropertiesSet()方法,给属性赋值)、还有BeanFactoryAware等等。


4、容器缓存阶段

2528692cef034393a9014b17ca759a44.png

容器缓存阶段主要是把Bean保存到IoC容器中缓存起来,到了这个阶段,Bean就可以被开发者使用了。

这个阶段涉及到的操作,常见的有,init-method这个属性配置的方法,会在这个阶段调用。

在比如BeanPostProcessors方法中的后置处理器方法如:postProcessAfterInitialization,也是在这个阶段触发的。


5、销毁实例阶段

73d0c207ed3546da8f29cf267264ecfb.png

这个阶段,是完成Spring应用上下文关闭时,将销毁Spring上下文中所有的Bean。

如果Bean实现了DisposableBean接口,或者配置了destory-method属 性,将会在这个阶段被调用。


看到这里,相信大家对Spring Bean的生命周期有了深刻的印象,需要视频中Spring Bean生

命周期的高清流程图,可以私信我。在附赠一张高清的时序图给大家!

85e67e549b644157b1c1cc4e32636b60.png

我是被编程耽误的文艺Tom,如果大家还有其他疑问,请在评论区留言。如果本次面试对你有帮助,请动动手指一键三连分享给更多的人。关注我,面试不再难!

相关文章
|
26天前
|
Java 开发者 Spring
解析Spring中Bean的生命周期
解析Spring中Bean的生命周期
20 2
|
17天前
|
XML Java 数据格式
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
19 1
|
17天前
|
XML druid Java
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
25 0
|
19天前
|
Java Spring 容器
解读spring5源码中实例化单例bean的调用链
解读spring5源码中实例化单例bean的调用链
|
21天前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
23 2
|
26天前
|
Java 开发者 Spring
Spring 中 Bean 的生命周期
Spring 中 Bean 的生命周期
15 2
|
10天前
|
Java 微服务 Spring
微服务04---服务远程调用,根据订单id查询订单功能,根据id查询订单的同时,把订单所属的用户信息一起返回,Spring提供了一个工具RestTemplate,Bean写在对象前面,以后可以在任何地
微服务04---服务远程调用,根据订单id查询订单功能,根据id查询订单的同时,把订单所属的用户信息一起返回,Spring提供了一个工具RestTemplate,Bean写在对象前面,以后可以在任何地
|
17天前
|
Java Spring
Spring注解内容----用来替代Bean
Spring注解内容----用来替代Bean
|
18天前
|
Java Linux 程序员
技术笔记:Spring生态研习【五】:Springboot中bean的条件注入
技术笔记:Spring生态研习【五】:Springboot中bean的条件注入
|
18天前
|
Java Spring