第十章:对象生命周期
#B站孙哥 Spring课程想学习
什么是对象的生命周期?
指的是一个对象创建,存活,消亡的一个完整过程
为什么要学习对象的声明周期
由spring负责对象的创建,存、活,销毁,了解生命周期,有利于我们使用好Spring为我们创建的对象
生命周期的3个阶段
- 创建阶段
spring工厂何时创建对象
scope="singleton"
spring工厂创建的同时就会创建对象
如果加上了 lazy-init=“true" 就会在获取对象的时候创建对象
scope="protoype"
spring会在获取对象的时候创建对象
ctx.getBean("")
- 初始化阶段
初始化就是spring工厂创建对象后,调用对象的初始化方法,完成初始化操作
有两种方法
- 一种是继承InitializingBean接⼝,实现里面的方法afterProperitesSet()
- 第二种是对象提供一个普通的方法 比如myInit(),然后在配置文件中声明这个初始化方法(不耦合InitializingBean接⼝)
<bean id="product" class="xxxx.Product" init-method="myInit"/>
- 细节分析
-
如果一个对象既实现InitializingBean 同时⼜提供的 普通的初始化⽅法 顺序
- InitializingBean
- 普通初始化⽅法
-
注入一定发生在初始化操作的前面
-
什么叫做初始化操作
- 从广义上来讲:大部分初始化操作有:数据库,IO,网络
- 销毁阶段
spring销毁对象前,会带哦用对象的销毁方法,完成销毁操作
-
Spring什么时候销毁所创建的对象?
ctx.close();
-
销毁方法是程序员定义,完成销毁操作
调用:spring工厂完成调用
定义方法
- DisposableBean
@Override
public void destroy() throws Exception {
System.out.println("destroy()方法调用");
}
- 定义一个普通的销毁方法
public void myDestroy () throws Exception{
System.out.println("myDestroy调用");
}
<bean id="product" class="com.huy.life.Product" init-method="myInit" destroy-method="myDestroy">
<property name="name" value="zhangsan"></property>
</bean>
- 销毁方法细节
-
销毁方法的操作只适用于scope="singleton"
-
什么是销毁操作, 主要是资源的释放操作 io.close() connection.close()
生命周期总结
- Spring工厂读取xml配置文件读取注入容器的对象类路径,id(创建对象的名称)
- 根据配置文件的信息,通过反射的反射创建对象
- 然后会进行依赖注入,通过调用set方法/构造方法
- 执行完后,如果继承了InitializingBean接口并实现其AfterProperties,就会执行这个AfterProperties()方法
- 如果还有自己编写的初始方法,比如Myinit,并在配置文件init-method标签注入,就会执行这个方法
- 若继承了DisposableBean接口,实现,detory()方法,就会执行这个方法
- 同理,在类中写了自己定义的销毁方法,并在配置中声明 destory-method就会执行这个销毁方法