Spring学习笔记【七】对象的生命周期

文章目录

对象的生命周期

01 什么是对象的生命周期


定义:对象从创建,存活,消亡的一个完整的过程
好处:有利于我们使用好Spring为我们创建的对象

02 生命周期的阶段

2.1 创建阶段

何时创建对象

  • scope="singleton"
    • Spring 工厂在创建的同时,完成对象的创建
    • 如果说希望在获取对象在进行创建,在配置文件中加上 lazy-init = "true"
  • scope="prototype"
    • 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 细节分析

  1. 如果说同时提供两种方式, 先执行接口提供的方法, 然后执行自定义初始化方法
  2. 注入发生在初始化操作之前
  3. 初始化一般用于资源的初始化:数据库, 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 总结

  1. 创建Spring工厂
  2. 调用对象的构造方法
    1. scope=“singleton” : 创建Spring工厂的时候,进行创建
    2. scope=“prototype” : 获取对象的时候,进行创建
  3. 依赖注入
  4. 执行初始化操作
  5. 执行销毁操作
上一篇:brand


下一篇:DVWA登录login failed