文章目录
对象的生命周期
01 什么是对象的生命周期
定义:对象从创建,存活,消亡的一个完整的过程
好处:有利于我们使用好Spring为我们创建的对象
02 生命周期的阶段
2.1 创建阶段
何时创建对象
-
scope="singleton"
- Spring 工厂在创建的同时,完成对象的创建
- 如果说希望在获取对象在进行创建,在配置文件中加上
lazy-init = "true"
-
scope="prototype"
- Spring工厂在获取对象的时候,创建对象
- Spring工厂在获取对象的时候,创建对象
2.2 初始化阶段
Spring 工厂在创建完对象之后, 调用对象的初始化方法, 完成对应的初始化方法
初始化方法是 程序员根据需求, 提供初始化方法, 最终完成初始化操作, 但是初始化方法是由Spring工厂进行调用
2.2.1 初始化操作
- 方式一 :实现接口
InitializingBean
public class Product implements InitializingBean {
public Product(){
System.out.println("Product.product");
}
@Override
public void afterPropertiesSet() throws Exception {
// 自定义需求
System.out.println("Product.afterPropertiesSet");
}
}
- 方式二:对象自定义方法,使用指定的bean中加入
init-method = "方法名"
进行配置
public class Product {
public Product(){
System.out.println("Product.product");
}
public void init(){
System.out.println("Product.init");
}
}
<bean id="product" scope="singleton" class="com.spring.life.Product" init-method="init"></bean>
2.2.2 细节分析
- 如果说同时提供两种方式, 先执行接口提供的方法, 然后执行自定义初始化方法
- 注入发生在初始化操作之前
- 初始化一般用于资源的初始化:数据库, IO , 网络
2.3 销毁阶段
- Spring销毁对象之前,会调用对象的销毁方法,完成销毁操作
- Spring在 工厂关闭的时候, 销毁所创建的对象
- 销毁方法:程序员根据自己的需求定义销毁方法, 完成销毁操作
- 调用:Spring工厂进行调用
2.3.1 销毁操作
- 方式一 :实现
DisposableBean接口
package com.spring.model;
import org.springframework.beans.factory.DisposableBean;
public class Account implements DisposableBean{
@Override
public void destroy() throws Exception {
System.out.println("进行销毁");
}
}
@Test
public void test3(){
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
ac.close();
}
- 方式二 : 自定义方法,在指定bean中加入
destroy-method="自定义方法名"
属性
package com.spring.model;
public class Account {
public void destroy(){
System.out.println("销毁");
}
}
<bean id="account" scope="singleton" class="com.spring.model.Account" destroy-method="destroy"></bean>
2.3.2 细节分析
- 销毁方法的操作只适用于
scope=“singleton”
- 主要是根据自己的需求,进行资源的释放
03 总结
- 创建Spring工厂
- 调用对象的构造方法
- scope=“singleton” : 创建Spring工厂的时候,进行创建
- scope=“prototype” : 获取对象的时候,进行创建
- 依赖注入
- 执行初始化操作
- 执行销毁操作