当前位置: 首页 > article >正文

【Spring】Bean 的生命周期:从实例化到销毁

实例化阶段:

        Bean的实例化是通过反射创建的。Spring根据@Component、@Bean或者XML中的<bean>元素配置,来确定要创建的Bean。

属性赋值阶段:

        实例化完成后,Spring会进行依赖注入。包括将属性值注入到Bean的字段中,可能是通过构造函数注入、setter方法注入,或者直接字段注入。

初始化前的扩展机制:

        Bean可以实现BeanNameAware、BeanFactoryAware等Aware接口,从而在初始化之前获取Bean的名称、BeanFactory、Application等容器资源。例如,ApplicationContextAware接口允许Bean获取ApplicationContest,以便进一步与Spring容器交互。

BeanPostProcessor的作用:

        该接口允许开发者在Bean初始化前后添加自定义逻辑。例如,可以在postProcessBeforeInitialization方法中执行某些前置操作,如代理包装、AOP切面等。在postProcessBeforeInitialization中,可以进一步修改或替换Bean实例。

初始化的细节:

InitializingBean接口提供了一个afterPropertiesSet方法,用于在Bean的所有属性设置完成后执行一些自定义初始化逻辑。开发者也可以通过@PostConstruct注解或者XML/Java配置中的init-method属性,来指定初始化方法。

Bean的就绪状态:

        Bean完成初始化后,即进入就绪状态,可以供应用程序使用。在此状态下,Bean已经完成了所有的属性设置和初始化步骤,处于可用状态。

销毁阶段的清理:

        Bean的销毁通常在容器关闭时进行。Disposable接口提供了destory方法,用于清理资源。开发者也可以通过@PreDestory注解或配置中的destory-method属性,指定清理逻辑。


http://www.kler.cn/news/335784.html

相关文章:

  • Docker 启动 PostgreSQL 主从架构:实现数据同步的高效部署指南
  • 1004-05,使用workflow对象创建http任务,redis任务
  • mysql单表查询·3
  • LeetCode 2187.完成旅途的最少时间:二分查找
  • 给Linux操作系统命令取个别名
  • Flux 最新最快ControlNet模型现身:法线贴图详细测评
  • 入职外包一个月,我离职了....
  • 云计算Openstack Glance
  • ICM20948 DMP代码详解(66)
  • 【测试】接口测试与接口自动化
  • 【算法】DFS 系列之 穷举/暴搜/深搜/回溯/剪枝(下篇)
  • 【项目安全设计】软件系统安全设计规范和标准(doc原件)
  • TiDB 中的自增主键有哪些使用限制,应该如何避免?
  • DevExpress WinForms v24.1新版亮点:富文本编辑器、电子表格组件功能升级
  • 三种波束形成方法的区别(MVDR、MMSE以及MSNR波束形成器)
  • 【已解决】安装pr2020的时候,提示错误代码182
  • MATLAB智能优化算法-学习笔记(4)——灰狼优化算法求解旅行商问题【过程+代码】
  • 无人机(自组穿越机,航模)-芯片选型
  • Angular基础学习(入门 --> 入坑)
  • PS批量执行动作,ps批量修改图片大小,并修改文件的类型