news 2026/3/27 20:37:23

一文讲清楚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/3/25 15:50:52

3步构建因果模型:R语言在真实世界临床研究中的高效实践

第一章:因果推断在真实世界临床研究中的意义在现代医学研究中,随机对照试验(RCT)长期被视为评估治疗效果的金标准。然而,RCT往往受限于严格的纳入标准、高昂的成本和伦理约束,难以全面反映真实世界中的患者…

作者头像 李华
网站建设 2026/3/27 15:14:50

从零搭建智能工作流,手把手教你玩转Dify可视化编辑器

第一章:从零认识Dify智能工作流 Dify 是一个开源的 AI 应用开发平台,旨在帮助开发者和非技术人员快速构建基于大语言模型的智能应用。其核心特性之一是“智能工作流”(Workflow),它允许用户通过可视化编排方式连接多个…

作者头像 李华
网站建设 2026/3/27 7:47:53

R语言变量选择在农业产量分析中的应用(20年专家压箱底方法论)

第一章:R语言变量选择在农业产量分析中的核心价值在现代农业数据分析中,精准识别影响作物产量的关键因素是制定科学种植策略的基础。R语言凭借其强大的统计建模与可视化能力,成为农业研究者进行变量选择的首选工具。通过合理筛选土壤养分、气…

作者头像 李华
网站建设 2026/3/27 11:06:34

【稀缺资源】临床数据亚组分析核心算法(R代码+案例数据免费送)

第一章:临床数据亚组分析概述在临床研究中,亚组分析是一种关键的统计方法,用于探索治疗效果在不同患者群体中的异质性。通过对特定人口学、病理特征或基因标记等变量进行分层,研究人员能够识别出对干预措施响应更强或更弱的子群体…

作者头像 李华
网站建设 2026/3/25 4:18:04

【Dify导出格式实战指南】:掌握高效检索结果处理的5大核心技巧

第一章:Dify导出格式的核心概念与应用场景Dify 是一个面向 AI 应用开发的低代码平台,支持将构建好的工作流、提示词工程及模型配置以标准化格式导出。导出格式不仅承载了应用的完整逻辑结构,还确保了跨环境迁移与版本管理的可行性。核心数据结…

作者头像 李华
网站建设 2026/3/24 17:18:17

Dify 1.7.0发布后,90%开发者忽略的音频多语言适配技巧

第一章:Dify 1.7.0 音频多语言支持的全新演进Dify 1.7.0 版本在语音处理能力上实现了重大突破,尤其在音频多语言支持方面引入了全新的底层架构与优化机制。该版本通过集成先进的语音识别模型和动态语言检测算法,显著提升了跨语言音频内容的理…

作者头像 李华