Spring5深入浅出篇:bean的生命周期

news2025/1/24 8:49:37

Spring5深入浅出篇:bean的生命周期

什么是对象的⽣命周期

指的是⼀个对象创建、存活、消亡的⼀个完整过程

为什么要学习对象的⽣命周期

由Spring负责对象的创建、存活、销毁,了解⽣命周期,有利于我们使⽤好Spring为我们创建的对象

⽣命周期的3个阶段

  • 创建阶段

    Spring⼯⼚何时创建对象

      scope="singleton"
    

当bean标签中增加scope="singleton"时,当你创建对象所有的引用都是第一个对象的内存地址;sigleton:只会创建⼀次简单对象 默认值

Spring⼯⼚创建的同时,对象的创建
注意:设置scope=singleton 这种情况下 也需要在获取对象的同时,创建对象
<bean lazy-init="true"/>
	scope="prototype"

prototype:每⼀次都会创建新的对象

Spring⼯⼚会在获取对象的同时,创建对象
ctx.getBean("")
  • 初始化阶段
Spring⼯⼚在创建完对象后,调⽤对象的初始化⽅法,完成对应的初始化操作
1. 初始化⽅法提供:程序员根据需求,提供初始化⽅法,最终完成初始化操作
2. 初始化⽅法调⽤:Spring⼯⼚进⾏调⽤
  • 实现InitializingBean接⼝,重写afterProperitesSet()方法完成初始化操作
//程序员根据需求,实现的⽅法,完成初始化操作
public void afterProperitesSet(){
 
}
  • 对象中提供⼀个普通的⽅法(通过配置的方式将初始化方法指定给Spring)
public void myInit(){
 
}
<bean id="product" class="xxx.Product" init-method="myInit"/>
  • 细节分析

如果⼀个对象即实现InitializingBean 同时⼜提供的 普通的初始化⽅法 顺序

1. InitializingBean
2. 普通初始化⽅法

注⼊⼀定发⽣在初始化操作的前⾯

什么叫做初始化操作

资源的初始化:数据库 IO ⽹络 .....
  • 销毁阶段
Spring销毁对象前,会调⽤对象的销毁⽅法,完成销毁操作
1. Spring什么时候销毁所创建的对象?工厂关闭时销毁所创建的对象
 ctx.close();
2. 销毁⽅法:程序员根据⾃⼰的需求,定义销毁⽅法,完成销毁操作
 调⽤:Spring⼯⼚完成调⽤
  • 实现DisposableBean接口来重写destroy()方法来定义对象销毁时需要的操作
public void destroy()throws Exception{
 
}
  • 定义⼀个普通的销毁⽅法(通过配置的方式将对象销毁的方法指定给Spring)
public void myDestroy()throws Exception{
}
<bean id="" class="" init-method="" destroy-method="myDestroy"/>
  • 细节分析

销毁⽅法的操作只适⽤于 scope=“singleton”

什么叫做销毁操作

主要指的就是 资源的释放操作 io.close() connection.close();

写在最后

如果你想了解更多关于全干程序员demo,可以关注公众号-全干程序员demo,后面文章会首先同步至公众号。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

知识图谱的演进与基于 OpenSPG+TuGraph 的推理实践

本文为蚂蚁集团开发工程师王少飞在TuGraph Meetup北京站的演讲&#xff0c;主要介绍了蚂蚁知识图谱平台经过多年金融领域业务沉淀的知识语义增强可编程框架SPG&#xff0c;及TuGraph作为执行引擎在图谱推理过程的作用。 作者介绍&#xff1a; 王少飞&#xff0c;蚂蚁知识图谱推…

微信小程序抓包教程

前言 笔者最近在研究如何又简单又精准的对微信小程序进行HTTP/HTTPS流量抓包&#xff0c;然后进行渗透测试。研究了几天&#xff0c;发现了一个最适合自己的方法&#xff0c;特此进行记录。 前期准备 流量工具&#xff1a;Proxifier抓包工具&#xff1a;BurpSuite电脑端微信…

选择程序员是为什么?

本章节是关于为什么会选择一名程序员的经验分享 首先&#xff0c;我为什么会选择这个方向&#xff0c;可能是因为钱多&#xff0c;学东西不就是为了赚钱嘛&#xff1f;这是一点&#xff0c;不过最让我接收这个行业的是好奇世界的新大陆&#xff0c;可以简单的说就是&#xff0c…

蓝桥杯第十届c++大学B组详解

目录 1.组队 2.年号字符 3.数列求值 4.数的分解 5.迷宫 6.特别数的和 7.完全二叉树的权值 8.等差数列 9.后缀表达式 10.灵能传输 1.组队 题目解析&#xff1a;就是在个篮球人中选择这个最大的成绩&#xff0c;每个人只能选择一次不能重复选择。选满5人之后的成绩是最…

洛谷P1115最大子段和[神奇的题目]

啊&#xff0c;好久没更新了 往期内容推荐&#xff1a; 欧几里得算法-----无聊的军官pro max版本-CSDN博客 &#xff08;并不怎么华丽的分割线&#xff09; 一&#xff0c;题目描述 给出一个长度为 n 的序列 a&#xff0c;选出其中连续且非空的一段使得这段和最大。 ## 输…

npm i -g nodemon 遇到的下载卡住及运行权限问题解决记录

一、下载nodemon原因 nodemon作用&#xff1a;用node环境运行js文件时可以实时刷新运行出结果 (即修改js代码后不需再手动重新运行js文件) 二、下载卡住 reify:semver:timing reifyNode:node_modules/nodemon Completed 卡住位置&#xff1a;reify:semver: timing reifyNode…

C语言—每日选择题—Day69

第一题 1、以下程序的输出结果是&#xff08; &#xff09; int main() {char arr[2][4];strcpy (arr[0],"you");strcpy (arr[1],"me");arr[0][3]&;printf("%s \n",arr);return 0; } A: you&me B: you C: me D: err 答案及解析 A 这里重…

多项式拟合:最小二乘、拉格朗日插值、牛顿插值

多项式拟合是一种常用的数学和机器学习方法&#xff0c;它使用一个多项式函数来拟合一组数据点。多项式拟合的目的是在众多的样本点中找出满足样本点分布的多项式。它基于多项式函数的性质&#xff0c;可以表示为 yw0w1xw2x2…wnxn 的形式&#xff0c;其中 y 是因变量&#xff…

学习大数据,所需要的java(Maven)基础(1)

文章目录 使用Maven的优势第三方jar包添加第三方jar包获取jar包之间的依赖关系jar包之间的冲突处理将项目拆分成多个工程模块 实现项目的分布式部署Maven是什么自动化构建工具构建的概念构建环节自动化构建 Maven如何使用安装Maven核心程序maven联网问题Maven中的settings配置在…

【vue】v-bind动态属性绑定

v-bind 简写:value <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><styl…

4月跨境选品攻略:四类爆品机会,抢占市场流量!

我们来聊聊4月份海外电商的选品&#xff0c;4月份开始进入年春季&#xff0c;在西方人们开始更多的户外活动&#xff0c;阳光更加明媚&#xff0c;所以哪些产品在这个季节很好销售呢&#xff1f; 第一类&#xff1a;墨镜 谷歌搜索过去五年的搜索数据显示&#xff0c;每年4月份…

变速齿轮原理分析及检测方案

据FairGaurd游戏加固观察&#xff0c;在游戏面临的众多外挂风险中&#xff0c;除了常见的内存修改、模拟点击、注入挂等作弊手段&#xff0c;黑灰产还常用「变速」手段实现作弊。 游戏安全风险分布占比图 「变速」顾名思义是指改变游戏运行速度。具体原理为通过 HOOK 游戏内时…

遥控小车电子方案

遥控小车的功能开发主要包括以下几个方面&#xff1a; 1.基本功能开发&#xff1a; 前进、后退、左转、右转&#xff1a;通过遥控器上的控制按钮&#xff0c;实现小车的前进、后退、左转和右转。加速、减速&#xff1a;通过遥控器上的油门控制按钮&#xff0c;实现小车的加速…

Can Transformer and GNN Help Each Other?

ABSTRACT 尽管 Transformer 在自然语言处理和计算机视觉方面取得了巨大成功&#xff0c;但由于两个重要原因&#xff0c;它很难推广到中大规模图数据&#xff1a;(i) 复杂性高。 (ii) 未能捕获复杂且纠缠的结构信息。在图表示学习中&#xff0c;图神经网络&#xff08;GNN&…

论文笔记:NEFTune: Noisy Embeddings Improve Instruction Finetuning

iclr 2024 reviewer 评分 5666 1 论文思路 论文的原理很简单&#xff1a;在finetune过程的词向量中引入一些均匀分布的噪声即可明显地提升模型的表现 2 方法评估

CUDA与cuDNN详细安装教程(最新)

写在前面&#xff1a; 在深度学习中&#xff0c;我们常常要对图像数据进行处理和计算&#xff0c;而处理器CPU因为需要处理的事情多&#xff0c;并不能满足我们对图像处理和计算速度的要求&#xff0c;显卡GPU就是来帮助CPU来解决这个问题的&#xff0c;GPU特别擅长处理图像数…

2024 年“认证杯”数学中国数学建模网络挑战赛

题目 C题 云中的海盐 巴黎气候协定提出的目标是&#xff1a;在 2100 年前&#xff0c;把全球平均气温相对于工业 革命以前的气温升幅控制在不超过 2 摄氏度的水平&#xff0c;并为 1.5 摄氏度而努力。 但事实上&#xff0c;许多之前的研究已经指出&#xff0c;全球的碳排放以及…

【面试八股总结】进程(二)

参考资料 &#xff1a;小林Coding、阿秀、代码随想录 一、进程调度 当⼀个进程的状态发⽣改变时&#xff0c;操作系统需要考虑是否要换⼀个进程执行&#xff0c;这就需要⽤到“进程调度算法”。 1. 调度目标 不同的调度算法具有不同的特性&#xff0c;因为使用以下标准比较…

Codewars:找到奇数 int

Codewars&#xff1a;找到奇数 int 给定一个数组&#xff0c;找到出现次数为奇数的整数。在数组中&#xff0c;总会有一个整数出现奇数次&#xff0c;尽管其他数字可能会出现多次。 例子&#xff1a; 输入&#xff1a;findOdd([20, 1, 1, 2, 2]) 输出&#xff1a;20输入&…

Thingsboard PE智慧运维仪表板实例(一)【智慧排口截污实例】

1、仪表板总览 以该实际落地项目为案例,跟着我一起搭建智慧运维大屏!社区版和专业版都通用。本文是致力于快速搭建,所以不会详细去讲Thingsboard的知识点,只讲如何配置和使用部件。 搭建仪表板的整体效果如下: 点击左侧设备列表可以查看设备详细页面: 2、设备 我的设备都…