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

【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.lryc.cn/news/451916.html

相关文章:

  • Ubuntu 安装RUST
  • Android Compose的基本使用
  • 计算机网络:计算机网络体系结构 —— 专用术语总结
  • Rust的前端Tauri编程-基于JS框架的初步探索
  • 【Flume Kafaka实战】Using Kafka with Flume
  • 5G NR物理信号
  • Pikachu-Cross-Site Scripting-存储型xss
  • 媲美GPT-4o mini的小模型,Meta Llama 3.2模型全面解读!
  • 【leetcode】 45.跳跃游戏 ||
  • coco(json)、yolo(txt)、voc(xml)标注格式的相互转换
  • 以太网交换安全:端口安全
  • [题解] Codeforces Round 976 (Div. 2) A ~ E
  • 【零基础入门产品经理】学习准备篇 | 需要学一些什么呢?
  • 第四届机器人、自动化与智能控制国际会议(ICRAIC 2024)征稿
  • [数据集][目标检测]电力场景防震锤缺陷检测数据集VOC+YOLO格式705张1类别
  • 【SpringBoot】
  • Linux操作系统中MongoDB
  • 2、.Net 前端框架:OpenAuth.Net - .Net宣传系列文章
  • unreal engine5制作动作类游戏时,我们使用刀剑等武器攻击怪物或敌方单位时,发现攻击特效、伤害等没有触发
  • 数据权限的设计与实现系列11——前端筛选器组件Everright-filter集成功能完善2
  • C++ 游戏开发
  • 【历年CSP-S复赛第一题】暴力解法与正解合集(2019-2022)
  • 基于PyQt5和SQLite的数据库操作程序
  • 在Ubuntu 20.04中安装CARLA
  • 【高中数学/对数/导数】曲线y=ln|x|过坐标原点的两切线方程为?
  • Qt CMake
  • 制造企业各部门如何参与生产成本控制与管理?
  • FireRedTTS - 小红书最新开源AI语音克隆合成系统 免训练一键音频克隆 本地一键整合包下载
  • 活体检测标签之2.4G有源RFID--SI24R2F+
  • Web3Auth 如何工作?