spring5学习笔记(五)spring对象创建与销毁
控制对象创建次数
简单对象
配置文件中 scope属性 单例(默认)只创建一次对象。 创建多个
复杂对象
factorybean方法创建 如果没有用factorybean还是实用scope属性
为什么要控制对象的创建次数?
根据对象自身的特点决定对象的创建情况。 好处:节省不必要的内存浪费。 什么样的对象只创建一次? sqlsessionFactory dao service 什么样的对象每一次都要创建新的? connection session
对象的生命周期
- 什么是对象的生命周期? 一个对象创建、存活、消亡的一个完整过程
- 为什么要学习对象的生命周期 因为由spring负责对象的创建、存活、销毁,了解生命周期,有利于使用好spring 框架
- 生命周期的3个阶段
创建阶段:
scope = singleton 工厂创建时对象创建(增加lazy init属性也可以变成获取时创建) scope=prototype 工厂会再获取对象的同时创建对象(getbean)
初始化阶段
spring工厂创建对象后,会调用对象的初始化方法,完成对应的初始化操作。 1.初始化方法提供:程序员根据需求提供初始化方法 2.初始化方法调用:spring工厂进行调用 初始化方法1:类实现initializingBean接口,的afterpropertiesset方法。 初始化方法2:方法1虽然很好,但是耦合的spring框架。 对象提供一个普通的方法。所以spring怎么认识这个方法呢?当然是配置文件。 细节分析:
- 两个初始化操作执行顺序:先执行initializingBean,后执行自己的普通方法。
- 如果有注入需求,注入和初始化顺序:先注入,后初始化。所以名字叫做afterproperteset。
- 什么叫做初始化操作?对于资源的初始化:数据库资源、IO资源、网络资源
销毁阶段
spring销毁对象前,会调用对象的销毁方法,完成销毁操作,销毁操作就是对应初始化的资源的释放操作。
- 什么时候销毁创建对象? 工厂关闭的时候。
- 销毁方法:程序员定义,spring工厂调用。 销毁方法1:实现DisposableBean接口,的destory方法。 销毁方法2:自己定义一个方法,配置文件配置一下。 接口先调用,自己定义的后调用。
细节分析:
- 销毁方法的操作只适用于scope=singleton
- 什么叫做销毁操作?主要指的就是资源的释放操作,io 和连接的close。