Spring中 Bean的生命周期

什么是Spirng中的Bean

如果把Spring看做一个大型工厂,则Spring容器中的Bean就是该工厂的产品。要想使用这个工厂生产和管理Bean,就需要在配置文件中告诉它需要哪些Bean,以及需要使用何种方式将这些Bean装配到一起。

Bean的本质就是Java中的类,而Spring中的Bean其实就是对实体类的引用,来生产Java类对象,从而实现生产和管理Bean

Spirng中Bean的生命周期

为什么要了解Bean的生命周期

在面向对象的程序中,想要使用某个对象,就需要先实例化这个对象。而 Spring 中的对象就是bean,bean 和普通的 Java 对象没啥大的区别,只不过 Spring 不再自己去 new 对象了,而是由 IoC 容器去帮助我们实例化对象并且管理它,我们需要哪个对象,去问 IoC 容器要即可。IoC 其实就是解决对象之间的耦合问题,Spring Bean 的生命周期完全由容器控制。

Bean的生命周期流程

实例化:当Spring IOC容器接收到对某个Bean的请求时,IOC容器会先通过反射机制实例化该Bean,即完成 BeanFactoryPostProcessor 的操作。

属性赋值:Spring IOC容器在创建Bean的过程中,会将Bean在XML文件中配置的属性值和BeanDefinition中的属性值设置到Bean中。

实例化后处理:Spring IOC容器会调用BeanPostProcessor的postProcessBeforeInitialization方法后,再调用Bean的初始化方法(即在Bean定义中配置的init-method)。

初始化:初始化是Bean接口中的一种方法,如果Bean在容器中配置了init-method,那么这个方法将会被调用,完成Bean的初始化操作。

实例化后处理:初始化完成之后,IOC容器会调用BeanPostProcessor的postProcessAfterInitialization方法。

使用:此时可以使用容器中的Bean对象了。

销毁:容器关闭时,记录释放所有的资源,包括所有的对象。

详细如下图

实际上总结下来就四步

  • 实例化 Instantiation
  • 属性赋值 Populate
  • 初始化 Initialization
  • 销毁 Destruction

以上为Spring Bean的生命周期的具体解析,包括:实例化、属性赋值、初始化、使用和销毁。在这一过程中,还可以使用自定义的操作来对Bean进行监测和处理,从而更好的满足开发人员的业务需求。

相关推荐
云和数据.ChenGuang1 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
摇滚侠1 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
川石课堂软件测试2 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
2501_937767162 小时前
自建 SQL 数据库定时备份踩坑复盘与落地思路
数据库·sql
silvamux_4 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
步行cgn4 小时前
StringHttpMessageConverter 详解:Spring MVC 中字符串读写的默认转换器
java·spring·mvc
摇滚侠5 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 11
java·笔记·python
小蒜学长5 小时前
基于Spring Boot+Vue3的在线医疗咨询系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·在线问诊·在线医疗咨询系统
Deng桑5 小时前
SpringAI写第一个Agent-把工单循环跑起来
java·agent·工具调用·spring ai
I Am a robert girl5 小时前
从 GameHorizon 拆解多时间尺度游戏评测:数据管线、离线基准与在线回放的三层设计
数据库·游戏·多时间尺度·数据管线·游戏评测·离线基准·在线回放