Spring对象生命周期学习

81 阅读2分钟

第十章:对象生命周期

#B站孙哥 Spring课程想学习

www.bilibili.com/video/BV185…

什么是对象的生命周期?

指的是一个对象创建,存活,消亡的一个完整过程

Spring Bean 生命周期

为什么要学习对象的声明周期

由spring负责对象的创建,存、活,销毁,了解生命周期,有利于我们使用好Spring为我们创建的对象

生命周期的3个阶段

  • 创建阶段

spring工厂何时创建对象

scope="singleton"

spring工厂创建的同时就会创建对象

如果加上了 lazy-init=“true" 就会在获取对象的时候创建对象

scope="protoype"

spring会在获取对象的时候创建对象

ctx.getBean("")

  • 初始化阶段

初始化就是spring工厂创建对象后,调用对象的初始化方法,完成初始化操作

有两种方法

  1. 一种是继承InitializingBean接⼝,实现里面的方法afterProperitesSet()
  2. 第二种是对象提供一个普通的方法 比如myInit(),然后在配置文件中声明这个初始化方法(不耦合InitializingBean接⼝)
<bean id="product" class="xxxx.Product" init-method="myInit"/>
  • 细节分析
  1. 如果一个对象既实现InitializingBean 同时⼜提供的 普通的初始化⽅法 顺序

    1. InitializingBean
    2. 普通初始化⽅法
  2. 注入一定发生在初始化操作的前面

  3. 什么叫做初始化操作

  • 从广义上来讲:大部分初始化操作有:数据库,IO,网络
  • 销毁阶段

spring销毁对象前,会带哦用对象的销毁方法,完成销毁操作

  1. Spring什么时候销毁所创建的对象?

    ctx.close();

  2. 销毁方法是程序员定义,完成销毁操作

​ 调用: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>
  • 销毁方法细节
  1. 销毁方法的操作只适用于scope="singleton"

  2. 什么是销毁操作, 主要是资源的释放操作 io.close() connection.close()

生命周期总结

图片.png

  1. Spring工厂读取xml配置文件读取注入容器的对象类路径,id(创建对象的名称)
  2. 根据配置文件的信息,通过反射的反射创建对象
  3. 然后会进行依赖注入,通过调用set方法/构造方法
  4. 执行完后,如果继承了InitializingBean接口并实现其AfterProperties,就会执行这个AfterProperties()方法
  5. 如果还有自己编写的初始方法,比如Myinit,并在配置文件init-method标签注入,就会执行这个方法
  6. 若继承了DisposableBean接口,实现,detory()方法,就会执行这个方法
  7. 同理,在类中写了自己定义的销毁方法,并在配置中声明 destory-method就会执行这个销毁方法