news 2026/5/26 9:17:03

一文讲清楚Spring Bean的生命周期(附详细流程图)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一文讲清楚Spring Bean的生命周期(附详细流程图)

01-什么是Bean的生命周期

Spring其实就是一个管理Bean对象的工厂。它负责对象的创建,对象的销毁等。

所谓的生命周期就是:对象从创建开始到最终销毁的整个过程

02-为什么要知道Bean的生命周期

生命周期的本质:在哪个时间节点上调用了哪个类的哪个方法

我们需要充分的了解在这个生命线上,都有哪些特殊的时间节点。 只有我们知道了特殊的时间节点都在哪,到时我们才可以确定代码写到哪

03-Bean的生命周期之5步

Bean生命周期的管理,可以参考Spring的源码:AbstractAutowireCapableBeanFactory类的doCreateBean()方法
Bean生命周期可以粗略的划分为五大步:

  • 第一步:实例化Bean—— 调用无参数构造方法

  • 第二步Bean属性赋值—— 调用set() 方法

  • 第三步:初始化Bean—— 会调用Bean的 init() 方法,init() 方法需要自己写,自己配置,方法名随意

  • 第四步:使用Bean

  • 第五步:销毁Bean—— 会调用Bean的 destroy() 方法,这个方法需要自己写,自己配置,方法名随意

注意点:只有正常关闭spring容器,bean的销毁方法才会被调用

04-Bean生命周期之7步 —— 面试

在以上的5步中,第3步是初始化Bean,如果你还想在初始化前和初始化后添加代码,可以加入“Bean后处理器”

编写一个类实现BeanPostProcessor类,并且重写before和after方法

import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; @Component public class LogBeanPostProcessor implements BeanPostProcessor { // 方法有两个参数: // 第一个参数:刚创建的bean对象 // 第二个参数:bean的名字 // 在调用initBean()前执行,即初始化Bean方法执行之前调用 @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("Bean后处理器的before方法执行,即将开始初始化"); return bean; } // 在调用initBean()后执行,即初始化Bean方法执行之后调用 @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("Bean后处理器的after方法执行,已完成初始化"); return bean; } }

如果加上Bean后处理器的话,Bean的生命周期就是7步了:

掌握以上7步应付面试足矣

05-Bean生命周期之10步

关于上图中检查Bean是否实现了Aware的相关接口的说明:
Aware相关的接口包括:BeanNameAwareBeanClassLoaderAwareBeanFactoryAware

  • 当Bean实现了BeanNameAware,Spring会将Bean的名字传递给Bean

  • 当Bean实现了BeanClassLoaderAware,Spring会将加载该Bean的类加载器传递给Bean

  • 当Bean实现了BeanFactoryAware,Spring会将Bean工厂对象传递给Bean

对于SpringBean的生命周期,掌握之前的7步即可,够用

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 5:46:16

提示工程架构师进阶:AI提示系统创新突破中的少样本学习技术

提示工程架构师进阶:少样本学习如何突破AI提示系统的能力边界? 摘要/引言:为什么你的提示系统总卡在“需要更多示例”? 清晨9点,某电商企业的AI产品经理小夏冲进会议室:“昨天上线的‘生鲜退货’意图识别…

作者头像 李华
网站建设 2026/5/26 8:41:50

【Dify扩展开发必知】:Agent工具集成的7大坑,90%开发者都踩过

第一章:Agent工具集成的核心概念与Dify架构解析在构建现代AI驱动的应用系统中,Agent工具集成已成为实现自动化决策与复杂任务处理的关键技术路径。通过将智能代理(Agent)与外部工具链深度整合,系统能够动态调用函数、访…

作者头像 李华
网站建设 2026/5/26 6:41:35

Wan2.2-T2V-A14B如何生成逼真的水下生物视频?

当AI开始“理解”生命,创作便有了灵魂 你有没有想过,一段深海章鱼在珊瑚丛中灵巧穿梭的镜头,不再需要潜水员潜入300米暗流、扛着摄像机守候数周?现在,只需一句精准描述,AI就能为你“现场直播”这场海底奇观…

作者头像 李华
网站建设 2026/5/25 14:48:10

【Dify缓存机制深度解析】:视频字幕检索性能提升的5大关键周期配置

第一章:Dify缓存机制在视频字幕检索中的核心作用在高并发的视频内容平台中,快速准确地检索字幕信息是提升用户体验的关键。Dify 框架通过其高效的缓存机制,在视频字幕检索场景中显著降低了数据库查询压力,同时提升了响应速度。该机…

作者头像 李华
网站建设 2026/5/25 9:27:49

CubeMx安装离线hal固件库实现离线生成的代码工程

这里写自定义目录标题下载hal库固件包进入ST官网产品选择器页面往下翻选择STM32F4系列选择对应的版本选择接受然后下载(这里必须要登录ST注册的邮箱密码才可以下载)CubeMX导入固件包打开CubeMX选择Help导入安装离载固件包生成工程,可观看我ST…

作者头像 李华
网站建设 2026/5/26 8:12:54

LobeChat能否用于创作小说?叙事结构生成能力评估

LobeChat能否用于创作小说?叙事结构生成能力评估 在数字创作的浪潮中,越来越多作家开始尝试借助人工智能完成从灵感到成稿的全过程。尤其是当一个工具既能保持专业级的文本质量,又能提供直观、灵活的操作体验时,它便有可能重塑整个…

作者头像 李华