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

Spring处理器和Bean的生命周期

  • Spring处理器和Bean的生命周期

    • Spring处理器是对Bean对象的的开发可以对BeanDifinition进行操作,例如动态添加、修改BeanDefinition、动态修改Bean。,也可以在Bean对象创建后对Bean对象进行代理增强。

      • 注意:对于处理器要又一个正确的认知,必须要对Bean生命周期有一个良好的认知。

    • 两种处理器

      • Bean工厂后处理器

        • 实现方式:将BeanFactoryPostProcessor交给Spring容器管理,实现BeanFactoryPostProcessor接口,实现postProcessBeanFactory方法。

          • xml配置

          • 运行结果

        • 案例1:修改BeanDifinition对象达成狸猫换太子的效果

          • Bean工产后处理器类

          • 运行结果

        • 案例2:增加BeanDifinition对象,实现了动态注册。

          • Bean工厂后处理器类

          • 测试和结果

      • Bean后处理器

        • 在bean创建后对生效,可以对Bean进行是对象创建之后,缓存到singletonObjects单例池之前,对Bean初始化过程的操作,包括属性的填充,初始化方法的执行等。二次加工如动态代理。

          • 实现方式通过实现 BeanPostProcessor接口,实现其postProcessBeforeInitialization(在 Bean 初始化之前调用()和postProcessAfterInitialization(在 Bean 初始化之后调用)方法,

            • 实现案例:对Bean对象的代理增强

              • 实现BeanPostProcessor

              • Springxml文件配置

              • 测试结果

    • Bean对象的生命周期

      • 即:Bean对象实例化之后(反射创建出对象),到bean成为一个完整对象,最终存到singletonobjects中的过程。最终分为三个阶段。

        • Bean实例化阶段:Spring框架会取出BeanDefintion的信息进行判断当前Bean范围是否是延迟加载。是否FactoryBean等,在将BeanDefintion存放到BeanDefintionMap后,创建Bean对象之前,可以调用Bean工厂后处理器对其进行修改增加等操作。

        • Bean初始化方法阶段,通过对BeanDefintionMap进行遍历创建Bean对象,此时Bean对象还是个半成品,可以调用Bean后处理器对其进行Aop代理增强,此后还会执行自动义初始化方法inti-method方法等,该阶段是最具技术含量和复杂的阶段

        • 完成阶段:Bean成为了一个完成Spring Bean,被存储到单例池singleonObjects完成了Spring Bean的整个生命周期。

http://www.xdnf.cn/news/15926.html

相关文章:

  • LinkedList与链表(单向)(Java实现)
  • 【2025/07/21】GitHub 今日热门项目
  • WinForm-免费,可商用的WinForm UI框架推荐
  • Linux 命令大全
  • Three.js实现银河流光粒子星空特效原理与实践
  • 【Android】交叉编译faiss库 | 问题解决
  • 【HarmonyOS】ArkTS语法详细解析
  • C++ <继承> 详解
  • Java IO流体系详解:字节流、字符流与NIO/BIO对比及文件拷贝实践
  • kafka 生产和消费 性能测试工具 kafka-producer-perf-test.sh kafka-consumer-perf-test.sh
  • 安装docker可视化工具 Portainer中文版(ubuntu上演示,所有docker通用) 支持控制各种容器,容器操作简单化 降低容器门槛
  • 2025最新版IntelliJ IDEA Ultimate for Mac专业版安装使用指南
  • C#最佳实践:为何应尽量减少静态类的使用
  • 【PTA数据结构 | C语言版】旅游规划
  • WSL如何安装docker?
  • 基于ArcFace损失函数训练的人脸特征提取模型
  • nextjs+react接口会请求两次?
  • UART串口
  • 【Git#6】多人协作 企业级开发模型
  • 多线程Python爬虫:加速大规模学术文献采集
  • 前端之学习后端java小白(一)之SDKMAN及helloword
  • 【深度学习新浪潮】如何系统性地学习扩散模型?
  • 影刀 RPA:批量修改 Word 文档格式,高效便捷省时省力
  • Elasticsearch X-Pack安全功能未启用的解决方案
  • MySQL索引失效常见场景总结
  • 线上问题排查之【CPU飙高100%】
  • [Ninja] 快速构建系统 | 字符串处理 | 0拷贝
  • JVM 类加载过程笔记
  • leetcode-sql-627变更性别
  • 计算机发展史:互联网时代的万物互联与全球变革