Loading

第十章 对象的生命周期

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"/>
      
    • 细节分析

      1. 如果一个对象既实现了InitializingBean接口, 又提供了普通的初始化方法时,怎么调用?谁先调用?

        都会起作用
        先调用接口方法
        再调用普通的初始化方法
        
      2. 如果对象中存在成员变量, 需要进行注入, 先注入还是先初始化?

        注入一定会发生在初始化之前
        
      3. 什么是初始化

        资源的初始化 : 数据库 IO 网络...
        
  • 销毁阶段

    Spring销毁对象之前,会调用对象的销毁方法,完成销毁操作
    
    1. Spring什么时候销毁所创建的对象
    	context.close();
    2. 销毁方法 : 程序员根据需求,定义销毁方法,完成销毁操作
          调用 : Spring工厂完成调用
    
    • 实现DisposableBean接口

      //将销毁需求写在该方法中,完成销毁操作
      public void destroy(){}
      
    • 在对象中提供一个普通的销毁方法

      //在对象中定义方法,命名无要求
      public void myDestroy(){}
      //配置文件中进行配置
      <bean id="product" class="xxx"...destroy-method="myDestroy"/>
      
    • 细节分析

      1. 销毁操作只适用于scope="singleton"时

      2. 什么是销毁

        主要是资源的释放
        
  • 总结

image

posted @ 2022-07-20 16:40  苏无及  阅读(28)  评论(0编辑  收藏  举报