Spring中的对象创建与生命周期管理

控制Spring工厂创建对象的次数

1.如何控制简单对象的创建次数

<bean id="account" scope="singleton|prototype" class="xxx.xxx.xxx"/>

singleton:只会创建一次简单对象 默认值

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

2.如何控制复杂对象的创建次数

Factory{

        isSingleton(){

                return true;//只会创建一次

                return false;//每一次都会创建新的

}

如果没有isSingleton方法,还是通过scope属性 进行对象创建次数的控制

 3.为什么要控制对象的创建次数?

好处:节省不必要的内存浪费

  • 什么样的对象只创建一次?

1.SqlSessionFactory

2.DAO

3.Service

  • 什么样的对象创建多次?

Connection

SqlSeesion|Session

对象的生命周期

1.什么是对象生命周期

指的是一个对象创建、存活、消亡的一个过程

2.为什么要学习对象的生命周期 

由Spring负责对象的创建、存活、销毁,了解生命周期,更加有利于使用好Spring框架

3.生命周期三个阶段

  • 创建阶段

Spring工厂何时创建对象

  •  scope="singleton"(也在获取时创建  lazy-init="true")//懒加载

Spring工厂创建的同时,对象的创建

  • scope="prototype"

Spring工厂会在获取对象的同时,创建对象

ctx.getBean("")

  • 初始化阶段 

Spring工厂在创建完对象后,调用对象的初始化方法,完成对应的初始化操作

1.初始化操作:程序员根据需求,提供初始化方法,最终完成初始化操作

2.初始化方法调用:Spring工厂进行调用

  • initalizingBean接口

//程序员根据需求,实现的方法,完成初始化操作

public void afterPropertitiesSet() 完成初始化

  • 对象种提供一个普通的方法 

public void myInit(){

        

<bean id="product" class="xxx.",init-method="myInit">

  • 细节分析:

1.如果一个对象既实现InitializingBean同时又提供普通的初始化方法 顺序

1.InitializingBean

2.普通初始化方法

2.注入一定发生在初始化操作的前面 

3.什么叫初始化操作

资源的初始化:数据库、IO、网络.....

  •  销毁阶段

Spring销毁对象前,会调用对象的销毁方法,完成销毁操作

1.Spring什么时候销毁所创建的对象呢?

ctx.close();//工厂关闭的时候

2.销毁方法:程序员根据自己的需求,定义销毁方法,完成销毁方法操作

        调用:Spring工厂发发调用

  •  DisposableBean
  • 自定义普通销毁方式

细节分析

1.销毁方法的操作只适用于scope="singleton"

2.什么叫销毁操作:

主要指的就是:资源的释放操作 

总结

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chainlit 实现SSO单点登录CAS授权完整代码图文教程

前言 之前写了一篇关于chanlit如何实现登录授权文章 《Chainlit 实现自定Oauth2.0登录完整代码图文教程》 ,文章以为接入gitee OAuth授权为例,图文并茂介绍如何操作,并附带了完整代码示例。这次我们实现更有难度的事情,使用chanlit实现CAS中央用户登录授权,下面是完整教程…

推理大模型时代,TextIn ParseX助力出版业知识资产重构

在大语言模型&#xff08;LLM&#xff09;与推理能力快速进化的技术浪潮下&#xff0c;出版机构沉淀数十年的非结构化数据资产&#xff0c;包括书籍、期刊、手稿及历史档案&#xff0c;正在焕发新的机遇。基于文档解析、NLP与大模型的推理生成能力&#xff0c;我们在图书馆层层…

【AI大模型智能应用】Deepseek生成测试用例

在软件开发过程中&#xff0c;测试用例的设计和编写是确保软件质量的关键。 然而&#xff0c;软件系统的复杂性不断增加&#xff0c;手动编写测试用例的工作量变得异常庞大&#xff0c;且容易出错。 DeepSeek基于人工智能和机器学习&#xff0c;它能够依据软件的需求和设计文…

[算法] 判断是否为字符串重排(simple, 面试)

文章目录 1. 题意2. 思路3. 编码 好的, 今天我们又是崭新的一天呐, 我们来分享一道很简单的题目 -> 判断是否为字符串重排 因为是简单 面试题的组合, 我们来一步一步走~ 力扣有个题解写的不错, 在这里分享一下: 力扣题解链接 1. 题意 给定两个由小写字母组成的字符串 s1…

健康养生:拥抱活力,畅享生活

在这个像高速列车般疾驰的现代社会&#xff0c;人们在忙碌中常常忘了呵护自己的身体。健康养生&#xff0c;就如同列车的保养手册&#xff0c;看似平淡无奇&#xff0c;实则是让我们保持最佳状态、驶向美好生活的关键。​ 饮食&#xff0c;是健康养生的 “砖石”。你看那色彩斑…

每日学习之一万个为什么

Mybatis官网 https://mybatis.org/mybatis-3/zh_CN/configuration.html Myabtis 入参 #{} 与 ${} 区别&#xff1a;前者占位符赋值&#xff0c;后者字符串拼接会在动态field和关键字用到但要防止SQL注入。 SQL中单个参数&#xff0c;占位符中建议写 形参名 如果是多个参数…

SpringBoot注解驱动CRUD工具:spring-avue-plus

项目背景 作为一个后端小伙伴&#xff0c;最大的痛点就是写完的接口需要拥有一些可视化的页面去承载这些功能使用【如果是只给后端那么swagger也足够了&#xff0c;非后端有点呛】如果有专业前端去弄确实也快&#xff0c;但是小公司呀~~~ 学呗~妈呀&#xff0c;现在的前端也挺…

manus对比ChatGPT-Deep reaserch进行研究类学术相关数据分析!谁更胜一筹?

没有账号&#xff0c;只能挑选一个案例 一夜之间被这个用全英文介绍全华班出品的新爆款国产AI产品的小胖刷频。白天还没有切换语言的选项&#xff0c;晚上就加上了。简单看了看团队够成&#xff0c;使用很长实践的Monica创始人也在其中。逐渐可以理解&#xff0c;重心放在海外产…

蛋白质功能预测论文阅读记录2025(DPFunc、ProtCLIP)

前言 最近研究到瓶颈了&#xff0c;怎么优化都提升不了&#xff0c;遂开始看点最新的论文。 DPFunc 2025.1.2 Nature Communication 中南大学 论文地址&#xff1a;DPFunc: accurately predicting protein function via deep learning with domain-guided structure inform…

c语言经典案例题

1. 交换两个数的值&#xff1a; #include <stdio.h> #define CRT_SECURE_NO_WARNINGS int main() {int a 5, b 10, c 0;c a;a b;b c;printf("a%d b%d", a, b); } 2. 键盘录入一个数组判断数组最大值&#xff1a; #include <stdio.h> #define CR…

facebook游戏投广:提高广告关键数据的方法

在当今竞争激烈的数字营销领域&#xff0c;游戏广告的投放效果直接关系到游戏公司的市场表现和盈利能力。然而&#xff0c;许多游戏公司在广告投放上面临着诸多挑战&#xff0c;如高昂的成本、低效的转化率以及难以追踪的效果。那么&#xff0c;如何才能通过数据分析真正提升游…

《MySQL数据库从零搭建到高效管理|库的基本操作》

目录 一、数据库的操作 1.1 展示数据库 1.2 创建数据库 1.3 使用数据库 1.4 查看当前数据库 1.5 删除数据库 1.6 小结 二、常用数据类型 2.1 数值类型 2.2 字符串类型 2.3 日期类型 一、数据库的操作 打开MySQL命令行客户端&#xff0c;安装完MySQL后会有两个客户端…

告别复杂日志解析 用bin2sql轻松实现MySQL数据闪回

mysqlbinlog⼯具使用 use test; CREATE TABLE t1 (id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(20) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;INSERT INTO t1(id, name) SELECT 101, tome101; INSERT INTO t1(id, name) SELECT 102, tome1…

工业三防平板AORO-P300 Ultra,开创铁路检修与调度数字化新范式

在现代化铁路系统的庞大网络中&#xff0c;其设备维护与运营调度的精准性直接影响着运输效率和公共安全。在昼夜温差大、电磁环境复杂、震动粉尘交织的铁路作业场景中&#xff0c;AORO-P300 Ultra工业三防平板以高防护标准与智能化功能体系&#xff0c;开创了铁路行业移动端数字…

Microsoft Dragon Copilot:医疗AI革命开启,用语音终结手写病历时代

微软正式发布全球首个医疗行业一体化语音AI助手Microsoft Dragon Copilot,标志着临床工作流程正式迈入“人机协作”新时代。这款工具通过语音+文本混合架构,将医生口述内容实时转化为结构化病历,并深度整合电子健康记录(EHR)系统,彻底颠覆了传统手写病历模式。根据微软官…

数据库约束

数据库约束 1. NULL约束2. UNIQUE&#xff1a;唯一约束3. DEFAULT&#xff1a;默认值约束4. PRIMARY KEY&#xff1a;主键约束5. FOREIGN KEY&#xff1a;外键约束6. CHECK约束 数据库约束是关系型数据库的一个重要功能&#xff0c;主要作用是保证数据的正确性&#xff0c;也就…

NetAssist 5.0.14网络助手基础使用及自动应答使用方案

以下是NetAssist v5.0.14自动应答功能的详细使用步骤&#xff1a; 一、基础准备&#xff1a; 工具下载网址页面&#xff1a;https://www.cmsoft.cn/resource/102.html 下载安装好后&#xff0c;根据需要可以创建多个server&#xff0c;双击程序图标运行即可&#xff0c;下面…

ChatGPT课件分享(37页PPT)

资料解读&#xff1a;ChatGPT课件分享 详细资料请看本解读文章的最后内容。 近年来&#xff0c;人工智能技术的迅猛发展引发了全球范围内的广泛关注&#xff0c;尤其是以OpenAI为代表的公司在自然语言处理领域的突破性进展&#xff0c;彻底改变了人机交互的方式。本文将详细解…

【机器学习】主成分分析法(PCA)

【机器学习】主成分分析法&#xff08;PCA&#xff09; 一、摘要二、主成分分析的基本概念三、主成分分析的数学模型五、主成分分析法目标函数公式推导&#xff08;梯度上升法求解目标函数&#xff09;六、梯度上升法求解目标函数第一个主成分七、求解前n个主成分及PCA在数据预…

【蓝桥杯—单片机】第十五届省赛真题代码题解析 | 思路整理

第十五届省赛真题代码题解析 前言赛题代码思路笔记竞赛板配置建立模板明确基本要求显示功能部分频率界面正常显示高位熄灭 参数界面基础写法&#xff1a;两个界面分开来写优化写法&#xff1a;两个界面合一起写 时间界面回显界面校准校准过程校准错误显示 DAC输出部分按键功能部…