第十章 对象的生命周期
1.什么是生命周期#
对象创建 存活 销毁的完整的过程
2.为什么学习对象的生命周期#
在以前通过new创建对象,调用对象,则该对象存活,直到被JVM的垃圾回收机制回收
现在由Spring负责对象的创建 存活 销毁,了解生命周期,有助于使用好Spring为我们创建的对象
3.生命周期的三个阶段#
-
创建阶段
-
scope="singleton"
Spring创建工厂的同时,创建对象 注意 : 设置scope="singleton"的同时,想要在获取对象的同时,创建对象 在bean标签中添加属性<bean ... lazy-init="true"/>
-
scope="prototype"
Spring工厂在获取对象的同时,创建对象
-
-
初始化阶段
Spring工厂在创建完对象后,调用对象的初始化方法,完成初始化操作 1. 初始化方法提供:程序员根据需求,提供初始化方法,完成初始化操作 2. 初始化方法调用:Spring工厂进行调用
-
实现InitializingBean接口
//将初始化需求写在方法里面,完成初始化操作 public void afterPropertiesSet(){}
-
在对象中提供一个普通的初始化方法
//名字随便起 public void myInit(){} //配置文件中进行配置 <bean id="product" class="xxx" init-method="myInit"/>
-
细节分析
-
如果一个对象既实现了InitializingBean接口, 又提供了普通的初始化方法时,怎么调用?谁先调用?
都会起作用 先调用接口方法 再调用普通的初始化方法
-
如果对象中存在成员变量, 需要进行注入, 先注入还是先初始化?
注入一定会发生在初始化之前
-
什么是初始化
资源的初始化 : 数据库 IO 网络...
-
-
-
销毁阶段
Spring销毁对象之前,会调用对象的销毁方法,完成销毁操作 1. Spring什么时候销毁所创建的对象 context.close(); 2. 销毁方法 : 程序员根据需求,定义销毁方法,完成销毁操作 调用 : Spring工厂完成调用
-
实现DisposableBean接口
//将销毁需求写在该方法中,完成销毁操作 public void destroy(){}
-
在对象中提供一个普通的销毁方法
//在对象中定义方法,命名无要求 public void myDestroy(){} //配置文件中进行配置 <bean id="product" class="xxx"...destroy-method="myDestroy"/>
-
细节分析
-
销毁操作只适用于scope="singleton"时
-
什么是销毁
主要是资源的释放
-
-
-
总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现