news 2026/6/15 15:13:04

一文讲清楚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/6/15 14:50:19

全球顶尖研究机构都在用的溯源方法,R语言实现竟如此简单?

第一章:环境监测中污染物溯源的核心挑战在环境监测领域,准确识别和追踪污染物来源是制定有效治理策略的前提。然而,由于污染源的多样性和环境介质的复杂性,污染物溯源面临诸多技术与方法上的挑战。数据采集的时空异质性 环境中的污…

作者头像 李华
网站建设 2026/6/15 3:39:08

Dify并行任务调度原理剖析(从入门到精通的4个阶段)

第一章:Dify工作流并行执行概述Dify 是一个支持低代码构建 AI 应用的开发平台,其核心特性之一是工作流的灵活编排能力。在复杂业务场景中,串行执行难以满足性能需求,因此 Dify 提供了对并行执行的原生支持,允许开发者将…

作者头像 李华
网站建设 2026/6/15 15:11:23

【华尔街都在用的风险对冲方法】:基于R语言的GARCH模型实战解析

第一章:金融风险对冲的核心逻辑与GARCH模型概述 在现代金融市场中,资产价格的波动性是影响投资决策和风险管理的关键因素。金融风险对冲的核心逻辑在于通过构建反向头寸或使用衍生工具,抵消潜在的价格不利变动带来的损失。这一过程依赖于对波…

作者头像 李华
网站建设 2026/6/15 6:22:10

检索结果暴露风险频发,你的Dify权限配置做对了吗?

第一章:检索结果的 Dify 权限校验在构建基于 Dify 的智能应用时,确保检索结果的安全性与访问控制至关重要。权限校验机制不仅保护敏感数据不被未授权用户访问,还能根据用户角色动态过滤返回内容。Dify 提供了灵活的权限管理接口,可…

作者头像 李华
网站建设 2026/6/14 17:40:20

【限时收藏】私有化Dify备份最佳实践:7步构建坚不可摧的数据防线

第一章:私有化 Dify 备份策略的核心价值在企业级 AI 应用部署中,Dify 作为一款支持可视化编排与模型集成的低代码平台,其数据资产和配置信息的安全性至关重要。私有化部署环境下,系统管理员需自主掌控数据生命周期,而完…

作者头像 李华
网站建设 2026/6/15 13:38:37

面试数据库八股文五问五答第四期

面试数据库八股文五问五答第四期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的! ⭐点赞⭐收藏⭐不迷路!⭐ 1)什么情况下 mysql 会索引失效? 不使用索引列进行查询&a…

作者头像 李华