Spring5深入浅出篇:bean的生命周期

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: Spring5深入浅出篇:bean的生命周期

Spring5深入浅出篇:bean的生命周期

什么是对象的⽣命周期

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

为什么要学习对象的⽣命周期

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

⽣命周期的3个阶段

  • 创建阶段

Spring⼯⼚何时创建对象

scope="singleton"

当bean标签中增加scope="singleton"时,当你创建对象所有的引用都是第一个对象的内存地址;sigleton:只会创建⼀次简单对象 默认值

Spring⼯⼚创建的同时,对象的创建
注意:设置scope=singleton 这种情况下 也需要在获取对象的同时,创建对象
<bean lazy-init="true"/>

scope="prototype"

prototype:每⼀次都会创建新的对象

Spring⼯⼚会在获取对象的同时,创建对象
ctx.getBean("")
  • 初始化阶段
Spring⼯⼚在创建完对象后,调⽤对象的初始化⽅法,完成对应的初始化操作
1. 初始化⽅法提供:程序员根据需求,提供初始化⽅法,最终完成初始化操作
2. 初始化⽅法调⽤:Spring⼯⼚进⾏调⽤
  • 实现InitializingBean接⼝,重写afterProperitesSet()方法完成初始化操作
//程序员根据需求,实现的⽅法,完成初始化操作
public void afterProperitesSet(){
 
}
  • 对象中提供⼀个普通的⽅法(通过配置的方式将初始化方法指定给Spring)
public void myInit(){
 
}
<bean id="product" class="xxx.Product" init-method="myInit"/>
  • 细节分析

如果⼀个对象即实现InitializingBean 同时⼜提供的 普通的初始化⽅法 顺序

1. InitializingBean
2. 普通初始化⽅法

注⼊⼀定发⽣在初始化操作的前⾯

什么叫做初始化操作

资源的初始化:数据库 IO ⽹络 .....
  • 销毁阶段
Spring销毁对象前,会调⽤对象的销毁⽅法,完成销毁操作
1. Spring什么时候销毁所创建的对象?工厂关闭时销毁所创建的对象
 ctx.close();
2. 销毁⽅法:程序员根据⾃⼰的需求,定义销毁⽅法,完成销毁操作
 调⽤:Spring⼯⼚完成调⽤
  • 实现DisposableBean接口来重写destroy()方法来定义对象销毁时需要的操作
public void destroy()throws Exception{
 
}
  • 定义⼀个普通的销毁⽅法(通过配置的方式将对象销毁的方法指定给Spring)
public void myDestroy()throws Exception{
}
<bean id="" class="" init-method="" destroy-method="myDestroy"/>
  • 细节分析
  1. 销毁⽅法的操作只适⽤于 scope="singleton"
  2. 什么叫做销毁操作

主要指的就是 资源的释放操作 io.close() connection.close();

相关文章
|
5天前
|
安全 Java Spring
Spring框架中的单例Bean是线程安全的吗?
Spring框架中的单例Bean是线程安全的吗?
10 1
|
5天前
|
XML 前端开发 Java
【JavaEE】深入了解Spring中Bean的可见范围(作用域)以及前世今生(生命周期)
【JavaEE】深入了解Spring中Bean的可见范围(作用域)以及前世今生(生命周期)
8 0
|
5天前
|
存储 缓存 Java
【JavaEE】Spring中注解的方式去获取Bean对象
【JavaEE】Spring中注解的方式去获取Bean对象
3 0
|
5天前
|
存储 Java 对象存储
【JavaEE】Spring中注解的方式去存储Bean对象
【JavaEE】Spring中注解的方式去存储Bean对象
9 0
|
5天前
|
存储 Java 对象存储
【JavaEE】DI与DL的介绍-Spring项目的创建-Bean对象的存储与获取
【JavaEE】DI与DL的介绍-Spring项目的创建-Bean对象的存储与获取
9 0
|
5天前
|
消息中间件 安全 Java
在Spring Bean中,如何通过Java配置类定义Bean?
【4月更文挑战第30天】在Spring Bean中,如何通过Java配置类定义Bean?
22 1
|
5天前
|
XML Java 数据格式
Spring Bean
【4月更文挑战第30天】Spring Bean
17 0
|
5天前
|
前端开发 Java 数据格式
【Spring系列笔记】定义Bean的方式
在Spring Boot应用程序中,定义Bean是非常常见的操作,它是构建应用程序的基础。Spring Boot提供了多种方式来定义Bean,每种方式都有其适用的场景和优势。
37 2
|
5天前
|
XML Java 数据格式
谈谈 Spring 中 Bean 的生命周期?
谈谈 Spring 中 Bean 的生命周期?
20 1
|
5天前
|
XML Java 数据格式
Spring Bean的定义(含创建Bean的三种方式)
Spring Bean的定义(含创建Bean的三种方式)