Spring学习笔记(五):控制工厂创建对象次数和生命周期

1.如何控制简单对象创建次数

<bean id="account" scope="singleton|prototype" class="xxxx.Account"/>
sigleton:只会创建⼀次简单对象 默认值
prototype:每⼀次都会创建新的对象

2.如何控制复杂对象创建次数

FactoryBean{
	isSingleton(){
		return true 只会创建⼀次
		return false 每⼀次都会创建新的
	}
}
如没有isSingleton⽅法 还是通过scope属性 进⾏对象创建次数的控制

3.为什么我们要控制对象创建次数

好处:节省不必要的内存浪费

  • 什么样的对象只创建一次?
    • SqlSessionFactory
    • Dao
    • Service
  • 什么样对象每次都需要创建新的?
    • Connection连接对象,每次控制事务不一样,所以需要新的
    • SqlSession|Session
  • 总结:可以共用,并且线程安全,就可以判断只需创建一次,反之创建新的

4.什么是对象的生命周期

在这里插入图片描述

  • 指的是一个对象创建,存活,消亡的一个完整过程
  • 由Spring负责对象的创建、存活、销毁,了解⽣命周期,有利于我们使⽤好Spring为我们创建的对象
  • 生命周期的3个阶段
    1. 创建阶段
      Spring工厂何时创建对象?
      当bean标签scope="singleton"时,创建工厂时会创建对象
      在这里插入图片描述
      当bean标签scope="prototype"时,getBean("")会创建对象
      在这里插入图片描述
      需要scope="singleton"时,并且调用getBean才获取对象,则开启懒加载即可<bean lazy-init="true"/>
    2. 初始化阶段(Spring⼯⼚在创建完对象后,调⽤对象的初始化⽅法,完成对应的初始化操作)
      • 初始化⽅法提供:程序员根据需求,提供初始化⽅法,最终完成初始化操作
      • 初始化⽅法调⽤:Spring⼯⼚进⾏调⽤
      • InitializingBean接⼝(Spring提供的接口,实现接口完成初始化方法afterProperitesSet())
        在这里插入图片描述
      • bean标签配置初始化方法(自己提供给Spring)<bean id="product" class="xxx.Product" init-method="myInit"/>
        在这里插入图片描述
        在这里插入图片描述
    3. 细节分析:如果⼀个对象即实现InitializingBean 同时⼜提供的 普通的初始化⽅法 顺序为先调用实现接口的初始化方法,再调普通初始化
    4. 注⼊⼀定发⽣在初始化操作的前⾯
  1. 销毁阶段
    • Spring销毁对象前,会调⽤对象的销毁⽅法,完成销毁操作
    • Spring什么时候销毁所创建的对象?ctx.close();
    • 销毁⽅法:程序员根据⾃⼰的需求,定义销毁⽅法,完成销毁操作
    • 调⽤:Spring⼯⼚完成调⽤
    • DisposableBean接口实现销毁
      在这里插入图片描述
    • 定义⼀个普通的销毁⽅法
      在这里插入图片描述
      在这里插入图片描述
    • 销毁⽅法的操作只适⽤于 scope="singleton"
    • 什么叫做销毁操作
主要指的就是 资源的释放操作
io.close()
connection.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值