浅谈Spring的Bean生命周期

在Spring框架中,Bean(即Java对象)的生命周期涵盖了从创建到销毁的全过程,主要包含以下几个阶段:

  1. 实例化(Instantiation)

    • 当Spring IoC容器需要创建一个Bean时,首先会通过反射调用构造函数创建Bean的实例。
  2. 初始化前准备(Dependency Injection,DI)

    • 创建Bean实例后,Spring容器开始进行依赖注入。容器会解析Bean定义中的依赖关系,并将所有需要的Bean注入到当前Bean中。这个过程包括setter注入、构造器注入或其他自定义注入策略。
  3. 初始化(Initialization)

    • 注入依赖之后,容器会调用Bean的初始化方法。对于普通的Java类,如果在Bean定义中指定了init-method属性,Spring会调用这个方法。对于Spring框架托管的Bean,还可以使用InitializingBean接口的afterPropertiesSet()方法或@PostConstruct注解的方法进行初始化。
  4. 使用(Usage)

    • 初始化完成后,Bean便处于就绪状态,可以被其它Bean或客户端代码使用。在应用程序运行期间,Spring容器会根据需要创建Bean的代理对象(如有AOP代理),并通过容器的getBean方法获取并使用这些Bean。
  5. 销毁前清理(Destruction Callbacks)

    • 当Spring容器关闭或Bean不再需要时,容器会负责销毁Bean。对于普通的Java类,如果在Bean定义中指定了destroy-method属性,Spring会调用这个方法。同时,Bean也可以实现DisposableBean接口,容器在销毁Bean时会调用其destroy()方法。另外,@PreDestroy注解的方法也会在销毁前被调用。
  6. 销毁(Destruction)

    • 完成清理工作后,Spring容器释放Bean所占有的资源,如关闭数据库连接、清理临时文件等,正式结束Bean的生命周期。

以下是整个流程的具体走向图
在这里插入图片描述

总的来说,Spring Bean的生命周期管理由Spring IoC容器负责,通过一系列标准化的生命周期方法和注解,让开发者能够更加方便地控制和管理Bean的创建、使用和销毁过程。

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

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

相关文章

【安全设备】Hfish如何测试

部署好了蜜罐如何测试? 1、查找节点 2、节点的端口 3、将部署的主机和节点联系在一起 http访问。 就可以测试了。

Win10系统VScode远程连接VirtualBox安装的Ubuntu20.04.5

1.打开虚拟机,在中端中输入命令: sudo apt-get install openssh-server 安装ssh 我这里已经安装完成,故显示是这样 2.输入命令:sudo systemctl start ssh 启动远程连接 注意,如果使用VirtualBox安装的虚拟机,需要启用…

Git分布式版本控制系统——在IDEA中使用Git(一)

一、在IDEA中配置Git 本质上还是使用的本地安装的Git软件,所以需要在IDEA中配置Git 打开IDEA的设置页面,按照下图操作 二、在IDEA中使用Git获取仓库 1、本地初始化仓库 2、从远程仓库克隆 方法一: 方法二: 三、.gitignore文件…

测绘管理与法律法规 | 测绘资质分类分级标准 | 学习笔记

目录 1. 申请条件 2.审批程序 3.专业技术人员的特殊规定 1. 申请条件 法人资格:申请单位必须具有法人资格。 专业技术人员:需拥有与测绘活动相适应的测绘专业技术人员和相关专业技术人员。 技术装备:具备与测绘活动相适应的技术装备和设…

js-利用blur使文本框自动控制格式

在 JavaScript 中,blur 是一个事件,它在一个元素失去焦点时触发。当用户从一个元素中移开或者将焦点转移到页面上的另一个元素时,该元素将触发 blur 事件。这个事件通常用于验证用户输入或执行其他与用户交互相关的操作。 假设我有个文本框&…

工业物联网让“制造”变成“智造”!——青创智通

工业物联网解决方案-工业IOT-青创智通 随着科技的不断进步和工业的持续发展,物联网(IoT)技术的出现为制造业带来了前所未有的变革。工业物联网(IIoT)作为物联网技术在工业领域的应用,正在逐渐改变传统的制…

Netty学习——高级篇2 Netty解码技术

接上篇:Netty学习——高级篇1 拆包 、粘包与编解码技术,本章继续介绍Netty的其他解码器 1 DelimiterBasedFrameDecoder分隔符解码器 DelimiterBasedFrameDecoder 分隔符解码器是按照指定分隔符进行解码的解码器,通过分隔符可以将二进制流拆分…

数据的插入、修改和删除

一、 插入数据 1. 向表中所有字段插入数据 (1) 指定所有字段及其相对应的值 insert into 表名(字段1,字段2,……) values(字段值1,字段值2,……);**【案例】**向goods表中插入一条新记录 步骤1&#xff…

密码学 | 椭圆曲线数字签名方法 ECDSA(上)

目录 1 ECDSA 是什么? 2 理解基础知识 3 为什么使用 ECDSA? 4 基础数学和二进制 5 哈希 6 ECDSA 方程 7 点加法 8 点乘法 9 陷阱门函数! ⚠️ 原文:Understanding How ECDSA Protects Your Data. ⚠️ 写在前面…

Java+saas模式 智慧校园系统源码Java Android +MySQL+ IDEA 多校运营数字化校园云平台源码

Javasaas模式 智慧校园系统源码Java Android MySQL IDEA 多校运营数字化校园云平台源码 智慧校园即智慧化的校园,也指按智慧化标准进行的校园建设,按标准《智慧校园总体框架》中对智慧校园的标准定义是:物理空间和信息空间的有机衔接&#…

第七周学习笔记DAY.1-封装

学完本次课程后,你能够: 理解封装的作用 会使用封装 会使用Java中的包组织类 掌握访问修饰符,理解访问权限 没有封装的话属性访问随意,赋值也可能不合理,为了解决这些代码设计缺陷,可以使用封装。 面向…

【Linux系统编程】第四弹---基本指令(二)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、echo指令 2、cat指令 3、more指令 4、less指令 4、head指令 5、tail指令 6、时间相关的指令 7、cal指令 8、find指…

若依从0到1部署

服务器安装 MySQL8 Ubuntu 在 20.04 版本中,源仓库中 MySQL 的默认版本已经更新到 8.0,因此可以直接使用 apt-get 安装。 设置 apt 国内代理 打开 https://developer.aliyun.com/mirror/ 阿里云镜像站,找到适合自己的系统: 找…

记【k8s】:访问 Prometheus UI界面:kubernetes-etcd (0/1 up) Error : out of bounds

记【k8s】:访问 Prometheus UI界面:kubernetes-etcd (0/1 up) Error : out of bounds 1、报错详情2、解决方法 💖The Begin💖点点关注,收藏不迷路💖 出现 “out of bound…

软件项目实施方案(Word原件2024)

软件实施方案 二、 项目介绍 三、 项目实施 四、 项目实施计划 五、 人员培训 六、 项目验收 七、 售后服务 八、 项目保障措施软件开发管理全套资料包清单: 工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书&am…

抖音IP打造品牌规划流量运营方案推广计划书

【干货资料持续更新,以防走丢】 抖音IP打造品牌规划流量运营方案推广计划书 部分资料预览 资料部分是网络整理,仅供学习参考。 50页可编辑(完整资料包含以下内容) 目录 详细的抖音运营方案,帮助品牌在抖音平台上提升…

MATLAB 点到平面距离的简易计算 (61)

MATLAB 点到平面的垂直距离 (61) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 一行代码计算点到平面的距离,下面是MATLAB版本的实现方法, 使用一组自定义的点和平面验证,结果表明计算正确: 二、算法实现 1.代码 代码如下(示例): % 定义点的坐标 point = …

李沐41_物体检测和数据集——自学笔记

边缘框 1.一个边缘框可以通过4个数字定义(左上xy,右上xy,左下xy,右下xy) 2.标注成本高 目标检测数据集 1.每行表示一个物体(图片文件名、物体类别、边缘框) 2.COCO:80物体、330…

ABeam德硕 | 大语言模型系列 (2) :大语言模型的商业模式及应用

上期我们分享了大语言模型的基本概念等内容,本期作为大语言模型系列的第二篇,我们将关注大语言模型的商业模式及商业价值,介绍MaaS (Model as a Service,模型即服务)的核心路径、国内外大语言模型收费方式情况及大语言模型在国内的…

串口接收第一个字节接收不到

问题描述: 我发 5 1 2 3 他接受的是1 2 3 5 全速运行第一个字节就没有了。但是把接受的数据再发出来,发现第一个字节到了最后一个字节。 看了网上说的,我一次只发一个字节不会出现这种情况,发多个字节全速运行就会出现这样情况,…