Spring各种PostProcessor : BeanDefinitionRegistryPostProcessor
概述
顾名思义,BeanDefinitionRegistryPostProcessor
定义了关于BeanDefinitionRegistry
的 PostProcessor
。这里的BeanDefinitionRegistry
其实就是一般常说的Spring bean
容器,通常是一个DefaultListableBeanFactory
,它实现了BeanDefinitionRegistry
接口用于作为bean定义注册表
,同时也实现了接口ConfigurableListableBeanFactory
用于作为一个bean容器
。
执行时机 : 在BeanDefinitionRegistry
的标准初始化之后所有其他一般的BeanFactoryPostProcessor
执行之前执行,此时所有的bean
定义已经加载但是还没有bean
实例被创建。
BeanDefinitionRegistryPostProcessor
继承自BeanFactoryPostProcessor
, 可以在一般BeanFactoryPostProcessor
调用之前对BeanDefinition
做一些操作, 尤其是它可以注册用来生成BeanFactoryPostProcessor
的bean
定义。
具体调用位置可以参考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相关推荐
- Spring : BeanFactoryPostProcessor 子类 BeanDefinitionRegistryPostProcessor
1.美图 2.概述 BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProcessor,是一种比较特殊的BeanFactoryPostProc ...
- Spring BeanDefinitionRegistryPostProcessor BeanPostProcessor作用
写博客,写博客,把自己知道的小知识点全部记录,? BeanDefinitionRegistryPostProcessor 接口属于Beanddefination 装配定义的范畴,此时bean 并没有 ...
- Spring源码深度解析(郝佳)-学习-Spring Boot体系原理
Spring Boot是由Pivotal团队提供的全新框架,其设计目的用来简化新Spring应用初始化搭建以及开发过程,该框架使用了我写的方式进行配置,从而开发人员不再需要定义样板化的配置,通过这 ...
- Spring容器生命周期
Spring容器生命周期 执行ConfigurableApplicationContext.refresh() 方法是Spring容器生命周期开始的主要入口点. 而调用BeanDefinitionRe ...
- 替换Spring容器中已经存在的Bean
替换Spring容器中已经存在的Bean 一.背景 二.需求 三.实现思路 四.实现步骤 1.模拟第三方jar包实现并加入Spring容器中 2.自己提供一个实现 3.替换掉jar包默认的实现 4.进 ...
- 【面试】Spring框架面试题
一.谈谈你理解的 Spring 是什么? Spring是一个生态,包含了23个开源框架,可以构建Java应用所需的一切基础设施 Spring通常指Spring Framework 核心解释 Sprin ...
- 如何用Netty实现一个轻量级的HTTP代理服务器
为什么会想通过Netty构建一个HTTP代理服务器?这也是笔者发表这篇文章的目的所在. 其主要还是源于解决在日常开发测试过程中,一直困扰测试同学很久的一个问题,现在我就来具体阐述一下这个问题. 在日常 ...
- 阿里巴巴一面问题搜集
没有时间整理和排版了. 原文:https://blog.csdn.net/no_endless/article/details/60880436 时间:2017-3-8 14:34 长:32分35时秒 ...
- halo 开源项目源码学习
目的 看开源项目的目的无非就两个,看别人的代码组织结构.看别人的用到得到技术,还有就是看别人踩过的坑. 感受 就我看halo项目的感觉而言.感觉就是注释几乎就没有用.我看似乎这个项目国人挺多的怎么一句 ...
最新文章
- 资源贴|吴恩达新课发布第1天,3万人观看 | 完整PPT
- 机器学习(七)——tf.keras搭建神经网络固定模式
- 大棚骨架搭建好 科学施肥增收增产
- python的raw函数_Python内建函数之raw_input()与input()代码解析
- 再写单链表(不带头单链表)
- 16 操作系统第四章 文件管理 文件的基本操作 文件共享 文件保护 文件系统的层次结构
- java小球碰撞实验报告_20155317 《Java程序设计》实验五网络编程与安全实验报告...
- TCP滑动窗口机制深度剖析
- jq判断是否为整数_jquery怎么判断是否是数字?
- C#中,如何随意拖动PictureBox?
- Cadence Orcad Capture 高亮整个网络的方法图文视频教程
- 分享个Duilib中基于wke的浏览器控件
- C语言的应用之单片机学习
- java field 赋值_Java Field.set()向对象的这个Field属性设置新值value
- 2022年G2电站锅炉司炉操作证考试题库及答案
- bzoj1911【APIO2010】特别行动队
- javaweb学生竞赛管理系统
- mathtype7.0最新版安装下载及使用教程
- HTML区块元素(讲解及示例)
- 【死磕JVM】看完这篇我也会排查JVM内存过高了 就是玩儿!
热门文章
- 动态规划之 铺砖问题
- 常用的网站优化方法分享
- 钉钉“跨界”在线教育?想说爱你不容易!
- 签名验证中常见的参数字典升序排序及拼接
- and门 simuilink_电力电子电路仿真——MATLAB和PSpice应用教学课件课件作者魏艳君第五章节幻灯片.ppt...
- python点击屏幕坐标_Appium+python自动化(二十二)- 三个臭皮匠顶个诸葛亮-控件坐标获取(超详解)...
- 条码打印最终好用的(直接调用官方DLL方式)
- windows环境PHP使用RabbitMq安装amqp扩展
- jQuery-------zTree树形插件-jQuery插件
- 基于 Alchemy 实现 AS3 与 C++ 交互(1)C++ 回传 Array 给 AS3