第十章 对象的生命周期
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"时
-
什么是销毁
主要是资源的释放
-
-
-
总结