概述

顾名思义,BeanDefinitionRegistryPostProcessor定义了关于BeanDefinitionRegistryPostProcessor 。这里的BeanDefinitionRegistry其实就是一般常说的Spring bean 容器,通常是一个DefaultListableBeanFactory,它实现了BeanDefinitionRegistry接口用于作为bean定义注册表,同时也实现了接口ConfigurableListableBeanFactory用于作为一个bean容器

执行时机 : 在BeanDefinitionRegistry的标准初始化之后所有其他一般的BeanFactoryPostProcessor执行之前执行,此时所有的bean定义已经加载但是还没有bean实例被创建。

BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProcessor, 可以在一般BeanFactoryPostProcessor调用之前对BeanDefinition做一些操作, 尤其是它可以注册用来生成BeanFactoryPostProcessorbean定义。

具体调用位置可以参考PostProcessorRegistrationDelegate#invokeBeanFactoryPostProcessors

BeanDefinitionRegistryPostProcessor的一个典型例子可以参考: ConfigurationClassPostProcessor

源代码解析

/*** Extension to the standard BeanFactoryPostProcessor SPI, allowing for* the registration of further bean definitions before regular* BeanFactoryPostProcessor detection kicks in. In particular,* BeanDefinitionRegistryPostProcessor may register further bean definitions* which in turn define BeanFactoryPostProcessor instances.* * 标准BeanFactoryPostProcessor SPI的扩展,允许在常规BeanFactoryPostProcessor 检测* 开始前注册更多的bean定义。尤其值得一提的是,BeanDefinitionRegistryPostProcessor * 甚至可以注册用来定义BeanFactoryPostProcessor实例的bean定义。* * 注意:该接口继承了另外一个接口 BeanFactoryPostProcessor * * @作者 Juergen Hoeller* @开始版本 3.0.1* @参考 org.springframework.context.annotation.ConfigurationClassPostProcessor*/
public interface BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor {/*** Modify the application context's internal bean definition registry after its* standard initialization. * 在应用上下文内部的bean definition registry的标准初始化之后修改对其进行修改。* * All regular bean definitions will have been loaded,* but no beans will have been instantiated yet. * * 此时所有常规的bean定义已经被加载,但是还没有bean被实例化。* * This allows for adding further* bean definitions before the next post-processing phase kicks in.* * 这样可以在下一阶段post-processing触发之前增加更多的bean定义。* * @param registry the bean definition registry used by the application context* @throws org.springframework.beans.BeansException in case of errors*/void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException;}

Spring各种PostProcessor : BeanDefinitionRegistryPostProcessor相关推荐

  1. Spring : BeanFactoryPostProcessor 子类 BeanDefinitionRegistryPostProcessor

    1.美图 2.概述 BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProcessor,是一种比较特殊的BeanFactoryPostProc ...

  2. Spring BeanDefinitionRegistryPostProcessor BeanPostProcessor作用

    写博客,写博客,把自己知道的小知识点全部记录,? BeanDefinitionRegistryPostProcessor 接口属于Beanddefination  装配定义的范畴,此时bean 并没有 ...

  3. Spring源码深度解析(郝佳)-学习-Spring Boot体系原理

      Spring Boot是由Pivotal团队提供的全新框架,其设计目的用来简化新Spring应用初始化搭建以及开发过程,该框架使用了我写的方式进行配置,从而开发人员不再需要定义样板化的配置,通过这 ...

  4. Spring容器生命周期

    Spring容器生命周期 执行ConfigurableApplicationContext.refresh() 方法是Spring容器生命周期开始的主要入口点. 而调用BeanDefinitionRe ...

  5. 替换Spring容器中已经存在的Bean

    替换Spring容器中已经存在的Bean 一.背景 二.需求 三.实现思路 四.实现步骤 1.模拟第三方jar包实现并加入Spring容器中 2.自己提供一个实现 3.替换掉jar包默认的实现 4.进 ...

  6. 【面试】Spring框架面试题

    一.谈谈你理解的 Spring 是什么? Spring是一个生态,包含了23个开源框架,可以构建Java应用所需的一切基础设施 Spring通常指Spring Framework 核心解释 Sprin ...

  7. 如何用Netty实现一个轻量级的HTTP代理服务器

    为什么会想通过Netty构建一个HTTP代理服务器?这也是笔者发表这篇文章的目的所在. 其主要还是源于解决在日常开发测试过程中,一直困扰测试同学很久的一个问题,现在我就来具体阐述一下这个问题. 在日常 ...

  8. 阿里巴巴一面问题搜集

    没有时间整理和排版了. 原文:https://blog.csdn.net/no_endless/article/details/60880436 时间:2017-3-8 14:34 长:32分35时秒 ...

  9. halo 开源项目源码学习

    目的 看开源项目的目的无非就两个,看别人的代码组织结构.看别人的用到得到技术,还有就是看别人踩过的坑. 感受 就我看halo项目的感觉而言.感觉就是注释几乎就没有用.我看似乎这个项目国人挺多的怎么一句 ...

最新文章

  1. 资源贴|吴恩达新课发布第1天,3万人观看 | 完整PPT
  2. 机器学习(七)——tf.keras搭建神经网络固定模式
  3. 大棚骨架搭建好 科学施肥增收增产
  4. python的raw函数_Python内建函数之raw_input()与input()代码解析
  5. 再写单链表(不带头单链表)
  6. 16 操作系统第四章 文件管理 文件的基本操作 文件共享 文件保护 文件系统的层次结构
  7. java小球碰撞实验报告_20155317 《Java程序设计》实验五网络编程与安全实验报告...
  8. TCP滑动窗口机制深度剖析
  9. jq判断是否为整数_jquery怎么判断是否是数字?
  10. C#中,如何随意拖动PictureBox?
  11. Cadence Orcad Capture 高亮整个网络的方法图文视频教程
  12. 分享个Duilib中基于wke的浏览器控件
  13. C语言的应用之单片机学习
  14. java field 赋值_Java Field.set()向对象的这个Field属性设置新值value
  15. 2022年G2电站锅炉司炉操作证考试题库及答案
  16. bzoj1911【APIO2010】特别行动队
  17. javaweb学生竞赛管理系统
  18. mathtype7.0最新版安装下载及使用教程
  19. HTML区块元素(讲解及示例)
  20. 【死磕JVM】看完这篇我也会排查JVM内存过高了 就是玩儿!

热门文章

  1. 动态规划之 铺砖问题
  2. 常用的网站优化方法分享
  3. 钉钉“跨界”在线教育?想说爱你不容易!
  4. 签名验证中常见的参数字典升序排序及拼接
  5. and门 simuilink_电力电子电路仿真——MATLAB和PSpice应用教学课件课件作者魏艳君第五章节幻灯片.ppt...
  6. python点击屏幕坐标_Appium+python自动化(二十二)- 三个臭皮匠顶个诸葛亮-控件坐标获取(超详解)...
  7. 条码打印最终好用的(直接调用官方DLL方式)
  8. windows环境PHP使用RabbitMq安装amqp扩展
  9. jQuery-------zTree树形插件-jQuery插件
  10. 基于 Alchemy 实现 AS3 与 C++ 交互(1)C++ 回传 Array 给 AS3