Spring IOC容器实例化Bean整体流程图

  • SpringBean实例化的基本流程-CSDN博客
  • Spring容器中的BeanDefinitionReader读取器,读取xml配置文件,解析每一个bean标签,将bean标签中信息封装到BeanDefinition对象中,该对象的集合存储到BeanDefinitionMap中,然后Spring框架遍历BeanDefinitionMap集合,对其中的每一个BeanDefinition对象存储的bean标签信息,通过反射创建对象,将对象存储到单例池(singletonObjects),当执行getBean()方法时,从单例池中获取对应的bean对象
  • Spring的后处理器-BeanFactoryPostprocessor-CSDN博客

  • BeanFactoryPostProcessor的作用包括但不限于以下几个方面:

    • 修改Bean的定义:通过实现BeanFactoryPostProcessor接口,可以在Spring容器实例化Bean之前修改Bean的定义信息,例如修改Bean的属性值、修改Bean的作用域、添加自定义的初始化方法等。

    • 注册额外的Bean定义:通过BeanFactoryPostProcessor接口,可以向Spring容器注册额外的Bean定义,从而在容器中创建更多的Bean实例。

    • 解析占位符和属性值:BeanFactoryPostProcessor可以解析配置文件中的占位符或者属性值,将其替换为实际的值。

    • 处理AOP相关的操作:BeanFactoryPostProcessor可以在Bean实例化之前对Bean的定义进行修改,从而实现AOP相关的操作,例如将Bean的定义转换为代理对象。

  • 执行时机:在BeanDefinitionMap填充完毕,Bean实例化之前执行

  • BeanPostProcessor的作用包括但不限于以下几个方面:

    • 修改Bean的属性值:通过实现BeanPostProcessor接口,可以在Spring容器实例化Bean之后,对Bean的属性进行修改或者增加一些附加的属性。

    • 自定义初始化逻辑:BeanPostProcessor接口提供了两个方法,postProcessBeforeInitialization和postProcessAfterInitialization,可以在Bean初始化之前和之后执行自定义的逻辑,例如执行一些初始化操作、校验Bean的状态等。

    • 实现AOP相关的功能:BeanPostProcessor接口可以用于实现AOP相关的功能,例如将Bean的代理对象替换为原始的Bean对象,或者在Bean的方法执行前后进行拦截和增强。

    • 实现其他扩展功能:通过BeanPostProcessor接口,可以实现其他一些扩展功能,例如动态代理、事件监听等。

  • 执行时机:在Bean实例化后,填充到单例池singletonObjects之前执行

相关推荐
第二只羽毛8 分钟前
重载和继承的实践
java·开发语言
王嘉俊92514 分钟前
设计模式--适配器模式:优雅解决接口不兼容问题
java·设计模式·适配器模式
王嘉俊92515 分钟前
设计模式--组合模式:统一处理树形结构的优雅设计
java·设计模式·组合模式
道199322 分钟前
50 台小型无人车与50套穿戴终端 5 公里范围内通信组网方案深度研究
java·后端·struts
迎風吹頭髮28 分钟前
UNIX下C语言编程与实践35-UNIX 守护进程编写:后台执行、脱离终端、清除掩码与信号处理
java·c语言·unix
光军oi44 分钟前
全栈开发杂谈————JAVA微服务全套技术栈详解
java·开发语言·微服务
帮帮志44 分钟前
目录【系列文章目录】-(关于帮帮志,关于作者)
java·开发语言·python·链表·交互
聪明的笨猪猪1 小时前
Java Spring “MVC ”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
Boop_wu2 小时前
[数据结构] Map和Set
java·数据结构·算法
一勺菠萝丶2 小时前
Mac 上用 Homebrew 安装 JDK 8(适配 zsh 终端)完整教程
java·python·macos