Spring Bean 生命周期的执行流程

(mic老师面试文档摘录)
普通人的回答:
Spring Bean 的生命周期,可以分为单例、多实例。呃... 不对,这个是 Spring Bean
的作用域。
生命周期,我想想....
我记得 Bean 的生命周期会有加载、实例化、销毁这些阶段,其他的记得不是很清晰。
再来看看高手的回答
高手的回答:
Spring 生命周期全过程大致分为五个阶段:
1.创建前准备阶段
2.创建实例阶段
3.依赖注入阶段
4.容器缓存阶段
5.销毁实例阶段
这张是 Spring Bean 生命周期完整流程图,其中对每个阶段的具体操作做了详细介绍:
(把这张图按照阶段截断,当我说第一个阶段时,就显示第一个阶段的图片,依次往后..)
1. 创建前准备阶段【干什么、作用】
这个阶段主要的作用是,Bean 在开始加载之前,需要从上下文和相关配置中解析并
Bean 有关的扩展实现
比如像`init-method`-容器在初始化 bean 时调用的方法、`destory-method`,容器在
销毁 bean 时调用的方法
以及,BeanFactoryPostProcessor 这类的 bean 加载过程中的前置和后置处理
这些类或者配置其实是 Spring 提供给开发者,用来实现 Bean 加载过程中的扩展机制,
在很多和 Spring 集成的中间件中比较常见,比如 Dubbo。
2. 创建实例阶段
这个阶段主要是通过反射来创建 Bean 的实例对象,并且扫描和解析 Bean 声明的一些
属性
3. 依赖注入阶段
如果被实例化的 Bean 存在依赖其他 Bean 对象的情况,则需要对这些依赖 bean 进行
对象注入。比如常见的`@Autowired`、setter 注入等依赖注入的配置形式。
同时,在这个阶段会触发一些扩展的调用,比如常见的扩展类:BeanPostProcessors
(用来实现 bean 初始化前后的扩展回调)、
InitializingBean(这个类有一个 afterPropertiesSet(),这个在工作中也比较常见)、
BeanFactoryAware 等等。
4. 容器缓存阶段
容器缓存阶段主要是把 bean 保存到容器以及 Spring 的缓存中,到了这个阶段,Bean
就可以被开发者使用了。
这个阶段涉及到的操作,常见的有,`init-method`这个属性配置的方法, 会在这个阶
段调用。
以及像 BeanPostProcessors 方法中的后置处理器方法如:
postProcessAfterInitialization,也会在这个阶段触发。
5. 销毁实例阶段
当 Spring 应用上下文关闭时,该上下文中的所有 bean 都会被销毁。
如果存在 Bean 实现了 DisposableBean 接口,或者配置了`destory-method`属性,会
在这个阶段被调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/140784.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开源供应链管理系统 多供应商批发管理系统方案及源码输出

开发框架:PHPMySQL 后端框架:ThinkPHP 订货端:PC小程序 客户订货端:小程序 多仓库OR多供应商:多供应商 是否进销存:自带进销存 整个方案含B端订货PC、小程序端、C端小程序端下单,源码&…

UI和UX设计师实用高效的设计工具大全

真正专业和优秀的UX设计师不会介意使用哪个工具。因为,只要能力足够,即使条件不同,工具不同,也可以设计出让人眼前一亮的作品。也许,这种理解本身并没有什么大问题。然而,如今,设计师显然有如此…

刨根问底:Java中的“\p{P}”到底是什么意思

问题由来: 在代码中看到了Pattern.compile("\\p{P}"),用来识别符号,但是这个正则表达式却不匹配加号,所以\p{P}到底是什么意思呢 谷歌了一下,找到StackOverflow上有人问了一模一样的问题 可是这个问题被关…

ChatGLM3本地部署运行(入门体验级)

文章目录 前言零 硬件小白基知填坑eForce Game Ready驱动程序CUDA常用命令 环境准备NVIDIA驱动更新CUDA安装 部署补充内容体验 前言 学习自B站up主技术爬爬虾,感谢up主提供的整合包! 零 硬件 6GB以上显存的NVIDIA显卡(品质越高&#xff0c…

基于猫群算法优化概率神经网络PNN的分类预测 - 附代码

基于猫群算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于猫群算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于猫群优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络的光滑…

Redhat7查看时区、修改时区

问题: 安装好redhat7之后,发现时间和物理机上面的网络时间不一致,于是查看本着修改时间的目的,却发现原来是时区的问题。 解决步骤: 查看时区状态信息 timedatectl修改时区到亚洲/上海 timedatectl set-timezone A…

Lasso回归和岭回归详解

当数据特征存在多重共线性,特征矩阵不满秩,或者用普通线性回归过拟合的状况时,我们需要用lasso回归或岭回归来构建模型。 左边是lasso回归,右边是岭回归。 Lasso使用的是系数 的L1范式(L1范式则是系数 的绝对值&#…

会展服务预约小程序的作用如何

不少场景都会有会展服务需求,比如婚宴、年会、展会等,往往需要租订场地,不同地域不同时间地点等,尤其大城市需求频次较高。 但在实际经营中,会员服务企业面临着一些难题。对多数企业来讲,线上是不可或缺的…

在 uniapp 中 一键转换单位 (px 转 rpx)

在 uniapp 中 一键转换单位 px 转 rpx Uni-app 官方转换位置利用【px2rpx】插件Ctrl S一键全部转换下载插件修改插件 Uni-app 官方转换位置 首先在App.vue中输入这个: uni.getSystemInfo({success(res) {console.log("屏幕宽度", res.screenWidth) //屏…

【Linux】你是否还在为安装虚拟机而烦恼?这篇博客将告诉你如何快速搭建Linux环境

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…

【2012年数据结构真题】

41题 (1) 最坏情况下比较的总次数 对于长度分别为 m,n 的两个有序表的合并过程,最坏情况下需要一直比较到两个表的表尾元素,比较次数为 mn-1 次。已知需要 5 次两两合并,故设总比较次数为 X-5, X 就是以 N…

5G网络切片,到底是什么?

网络切片,是5G引入的一个全新概念。 一看到切片,首先想到的,必然是把一个完整的东西切成薄片。于是,切面包或者切西瓜这样的画面,映入脑海。 添加图片注释,不超过 140 字(可选) 然而…

C++类中的const使用

目录 一,const成员函数 1,const成员函数的语法 2,相同限定符之间的调用 3,不同限定符对象与函数的调用 4,不同限定符函数之间的调用 一,const成员函数 1,const成员函数的语法 将const修饰…

分享一个个人博客神器 VanBlog

一、先看效果图 这是前台页面,我已经发布了一篇文章 这是后台页面 一句话,真的好用,各种功能一应俱全,废话不多说,开始吧。 二、 安装docker容器技术 如果你没有安装 docker 和 docker-compose,可以通…

深度学习AIR-PolSAR-Seg图像数据预处理

文章目录 深度学习sar图像数据预处理一.图片预处理操作1.log(1x)处理2.sqrt平方化处理 二.原网络训练效果展示原始数据训练效果展示: 三.对比实验1.采用原始数据2.采用取log(1x)后的数据3.采用取平方后归一化处理: 四.总结:五.思考 深度学习s…

eNSP启动路由器一直出#号、以为是安装配置winpcap的问题。。。。(以为是win10安装winpcap失败的问题。。。)

问题描述:eNSP启动一直出#号的一种参考方法_ensp一直#_Hong的博客-CSDN博客 原因是看了这篇博客,觉得ensp启动路由器的时候一直出现#号是因为winpcap安装的时候出现的问题。查看自己的winpcap安装成功之后的目录是: 然后因为那篇…

2783爱心公益网站的设计与实现JSP【程序源码+文档+调试运行】

一、摘要 本文将详细介绍一个基于Web的爱心公益网站的设计和实现。该网站包括前台用户模块和后台管理员模块,能够满足用户和管理员的不同需求。通过对用户和管理员的功能需求分析,本文将重点阐述数据库设计和界面设计的关键环节,同时介绍如何…

北邮22级信通院数电:Verilog-FPGA(9)第九周实验(1)实现带同步复位功能、采用上升沿触发的D触发器

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.顶层模块的书写 二.两种验证方法 2.1使用…

Azure 机器学习:在 Azure 机器学习中使用 Azure OpenAI 模型

目录 一、环境准备二、Azure 机器学习中的 OpenAI 模型是什么?三、在机器学习中访问 Azure OpenAI 模型连接到 Azure OpenAI部署 Azure OpenAI 模型 四、使用自己的训练数据微调 Azure OpenAI 模型使用工作室微调微调设置训练数据自定义微调参数部署微调的模型 使用…

leetCode 92.反转链表 II + 图解

92. 反转链表 II - 力扣&#xff08;LeetCode&#xff09; 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 206. 反转链表 - 力扣&#xff08;LeetCode&am…