SpringBoot扩展接口- BeanFactoryPostProcessor后置处理器

006-SpringBoot 扩展接口 SpringBoot 扩展接口 阅读详情

BeanFactoryPostProcessor接口,对BeanFactory进行后置方法调用

BeanFactoryPostProcessor分为两组:BeanDefinitionRegistryPostProcessor 注册器和 BeanFactoryPostProcessor 规则处理器

(先执行完所有注册器, 最后才执行规则处理器)

功能:

1、实现注册器接口方法,将自定义bean注册到beanFactory中

2、实现规则处理器,在所有注册器处理完成后,对BeanFactory进行扩展。

如Mybatis的dao接口bean的注册,就是通过实现这个注册器接口

public class MapperScannerConfigurer implements BeanDefinitionRegistryPostProcessor, InitializingBean, ApplicationContextAware, BeanNameAware

触发时间: 

ApplicationPreparedEvent 上下文准备完成后

 refreshContext()方法中调用 invokeBeanFactoryPostProcessors(beanFactory)

BeanDefinitionRegistryPostProcessor : 注册器:
SharedMetadataReaderFactoryContextInitializer
ConfigurationWarningsApplicationContextInitializer
ConfigurationClassPostProcessor(重点)

BeanFactoryPostProcessor  规则处理器:

ConfigFileApplicationListener # PropertySourceOrderingPostProcessor

执行流程:

Spring对我们自定义Bean的解析也是通过BeanDefinitionRegistryPostProcessor接口
实现类ConfigurationClassPostProcessor来进行扫描和注册bean定义
执行过程是:
    1、先将上下文ApplicationContext的beanFactoryPostProcessors列表转换成
        BeanDefinitionRegistryPostProcessor(registryProcessors 注册处理器)
        和BeanFactoryPostProcessor(regularPostProcessors规则处理器)
    
    2、首先会执行 registryProcessors 注册处理器的postProcessBeanDefinitionRegistry(registry)方法进行自定义bean定义的注册
    第一次执行注册
        会获取BeanFactory中内置的BeanDefinitionRegistryPostProcessor接口实现类,
        并且这个类要实现PriorityOrdered接口==》ConfigurationClassPostProcessor
        会调用ConfigurationClassPostProcessor类的注册方法扫描和注册所有bean定义。
    第二次执行注册:
        会获取BeanFactory中扫描后获取的BeanDefinitionRegistryPostProcessor接口实现类,
        并且这个类要实现Ordered接口
        调用注册方法
    第三次执行注册:
        一样获取BeanDefinitionRegistryPostProcessor接口实现,除了上面之外的实现类进行执行注册
        比如mybatis相关的bean注册就是在第三次进行注册(MapperScannerConfigurer)

    3、当执行完注册操作后,会将上面的BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor接口实现类
        调用接口方法postProcessor.postProcessBeanFactory(beanFactory),处理beanFactory的后置操作
16个有用的 SpringBoot 扩展接口,必须了解! 我们从这些的扩展点当中,大致可以窥视到整个bean的生命周期。在业务开发或者写中间件业务的时候,可以合理利用spring提供给我们的扩展点,在spring启动的各个阶段内做一些事情。以达到自定义初始化的目的。此篇总结,如果有错误或者疏漏的地方,恳请指正。 阅读详情

相关推荐

一文吃透Spring Boot扩展之BeanFactoryPostProcessor

BeanFactoryPostProcessor 是Spring中一个相当重要的扩展点,扩展点就是能让我们在Spring容器以及Bean生命周期的各个阶段中可以进行修改扩展。

Trouvailless的博客 1103

SpringBoot源码解读与原理分析(十二)后置处理器

针对bean对象的后置处理器:BeanPostProcessor针对BeanDefinition的后置处理器:BeanDefinitionRegistryPostProcessor这两种都是针对IOC容器中的Bean,在其生命周期的某一阶段前后进行一些切入处理。BeanPostProcessor切入的时机是bean对象初始化阶段前、后。

挑灯日记 记录自己 1886

SpringBoot实践(四十二):常用的PostProcessor后置处理器与Aware接口

在BeanFactory的创建过程中有很多对外提供的扩展点,就是xxxPostProcessor接口和各种xxxAware接口了,在真实生产中用处极大,可以让我们自定义某些beanDefinition或者某个Bean的属性,或者我们直接拿到SpringContext容器实例化后的对象;

叶子叶来 1025

深入探索Spring后置处理器:解析作用与实际应用场景

BeanDefinitionRegistryPostProcessor BeanFactoryPostProcessor InstantiationAwareBeanPostProcessor BeanPostProcessor是spring生命周期中常见的4个后置处理器,但是对于其作用和执行顺序很多人还不是非常清楚,这里给大家讲解一下其作用以及执行顺序,并带上实操。

Apple_Boy的博客 2897

SpringBoot扩展点--BeanFactoryPostProcessor

BeanFactory 后置处理器,是对 BeanDefinition 对象进行修改。(BeanDefinition:存储 bean 标签的信息,用来生成 bean 实例)。

fanderboy的博客 598

HFSS实战(三)——过孔via TDR仿真

在上一讲中,主要是通过观察S参数确定via的优化是否达到目标。但S参数只能看到一个整体的结果,并不知道via真实的阻抗是多少?想要单独确定via的阻抗,最好还是通过TDR的仿真。

luohuo9844的博客 1万+

Spring扩展点(一):后置处理器PostProcessor

之前我们对Spring,我们称之为配置类后置处理器。什么是后置处理器呢?其实后置处理器是**Spring提供给我们的一个非常重要的扩展点**,并且Spring内部的很多功能也是通过后置处理器来完成的,的重要性就说明这一点,同时该扩展点也方便Spring与其他框架进行集成,如Spring集成mybatis框架,就是通过后置处理器实现了扫描mapper接口注入到Spring容器中的。Spring框架中大致提供了以下三个核心后置处理器:BeanDefinitionRegistryPostProcessor。

weixin_41821642的博客 1021

W5500 MACRAW模式实战:在ESP32上抓取并解析原始以太网数据包

本文详细介绍了如何在ESP32开发板上使用W5500芯片的MACRAW模式捕获和解析原始以太网数据包。通过硬件连接指南、代码实现示例和协议解析技巧,帮助开发者深入理解网络通信底层机制,实现网络嗅探和自定义协议开发等高级应用。

weixin_42520573的博客 418

SpringBoot配置类解析-ConfigurationClassPostProcessor后置处理器

ConfigurationClassPostProcessor是一个BeanFactory的后置处理器,因此它的主要功能是参与BeanFactory的建造,在这个类中,会解析加了@Configuration的配置类,还会解析@ComponentScan、@ComponentScans注解扫描的包,以及解析@Import等注解。 ConfigurationClassPostProcessor主要重写了BeanDefinitionRegistryPostProcessor的postProcessBeanDe

BushRo 2778

AI Agent评估:指标、策略与最佳实践

AI智能体正逐渐融入到各个领域,从日常的对话助手到复杂的工作流程自动化,其应用范围不断拓展。然而,确保这些智能体能够可靠、高效地完成任务至关重要,这就使得AI智能体评估成为了人工智能发展过程中不可或缺的一环。本文将深入探讨AI智能体评估的指标、策略以及最佳实践,为读者全面解读这一关键领域。

llm_way的博客 3498

DDR4协议规范之(一)DDR4结构和寻址

DDR4 SDRAM结构和寻址DDR4 SDRAM的封装和寻址新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 DDR4 SDRAM的封装和寻址 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习

YJFeiii的博客 3万+

Springboot扩展点之BeanFactoryPostProcessor

验证结果表明,自定义的BeanFactoryPostProcessor接口的实现类(MyBeanFactoryPostProcessor),可以在容器读取到Bean的BeanDefinition数据之后,bean未实例化前,读取BeanDefiniion数据,并且根据需要进行修改,那么自定义的BeanFactoryPostProcessor接口的实现类(MyBeanFactoryPostProcessor)的工作原理是什么呢?BeanFactoryPostProcessor接口的实现类是什么时候实例化的?

凡夫编程 3675

【逆强化学习-1】学徒学习(Apprenticeship Learning)

逆强化学习算法1:学徒学习。算法原理+算法步骤+代码+仿真:一个基于gym的小车上山的仿真。附赠学徒学习+Q-Table及学徒学习+DQN的全套代码。

体会编程语言独到的美 7494

Spring - BeanFactoryPostProcessor 扩展接口

找出所有实现了BeanDefinitionRegistryPostProcessor接口和PriorityOrdered接口的bean,放入registryProcessors集合,根据PriorityOrdered接口来排序,然后这些bean会被。在实例化之前,spring允许我们通过自定义扩展来改变bean的定义,定义一旦变了,后面的实例也就变了,而beanFactory后置处理器BeanFactoryPostProcessor就是用来改变bean定义的。接口的bean,都被作为入参,然后调用了。

小工匠 3万+

【AI 编程工具】Codex配置部署指南

目录一、环境准备与基础安装1. 系统兼容性检查2. 前置依赖安装3. 安装方式选择二、API密钥配置与认证1. 获取API密钥2. 配置文件设置3. 临时配置方式三、沙盒环境配置与安全策略1. 沙盒模式选择2. 安全最佳实践四、高级功能配置1. 模型上下文协议(MCP)配置2. 模型版本切换3. 自定义网关配置五、常见问题排查1. 安装失败2. API调用失败3. 处理速度慢4. 配置文件不生效六、生产环境部署建议macOS/Linux:官方提供稳定支持,推荐使用原生环境Windows:官方标注为实验性支持

以实战经验介绍行业知识 2893

QGis软件 —— 1、Windows10下载安装QGis及插件

QGis —— 1、Windows10下载安装QGis及插件

5159

牢记16个有用的 SpringBoot 扩展接口

我们从这些的扩展点当中,大致可以窥视到整个bean的生命周期。在业务开发或者写中间件业务的时候,可以合理利用spring提供给我们的扩展点,在spring启动的各个阶段内做一些事情。以达到自定义初始化的目的。此篇总结,如果有错误或者疏漏的地方,恳请指正。

HelloWorld搬运工 2027

【VibeCoding系列】小白入门指南:模型选择、编辑器选择、项目预定全分析

开箱即用:下载安装就能用,不用配 API Key(也可以自己配)Cmd+K 快速修改:选中代码,按 Cmd+K,直接让 AI 修改Cmd+L 对话:侧边栏聊天,支持引用文件和代码@文件引用:输入 @ 就能引用项目中的文件,AI 自动读取上下文Agent 模式:告诉 AI 一个需求,它自动跨文件修改下载地址cursor.com(免费版有额度限制,足够入门)✅下载 Cursorcursor.com),安装打开✅选一个小项目(个人名片页 or Todo List)✅按照七步工作流开干。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 211

SpringBoot扩展接口总结

1、可扩展接口启动调用概述 2、可扩展的点逐个说明 3、写在最后

michael_linux的博客,一个小小小学生。滴水穿石,步步为营,只为那刹那芳华。 698

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

springboot 提供的可扩展接口

Spring框架提供了全面的基础架构支持。包含依赖注入和开箱即用等模块,如:Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spring ORM 、Spring TestSpring Boot 约定大于配置-----消除了设置Spring应用程序所需的XML配置1:创建独立的spring应用。 2:嵌入Tomcat, Jetty Undertow 而且不需要部署他们。 3:提供的“starters” poms来简化Maven配置 4:尽可能自动配置

weixin_39795049的博客 1155

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SpringBoot BeanFactoryPostProcessor(64)

SpringBoot作为Spring框架的扩展,其强大的扩展性依赖于一系列精心设计的扩展点。BeanFactoryPostProcessor就是其中一个核心扩展点,它允许开发者在Spring容器实例化任何bean之前,对bean定义(BeanDefinition)进行修改。这种机制为框架和应用开发者提供了极大的灵活性,可以在不修改源代码的情况下,动态调整应用的配置元数据。

Android开发领域创作者 740

16个SpringBoot扩展接口详解

Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。我非常喜欢这种自动装配的机制,所以在自己开发中间件和公共依赖工具的时候也会用到这个特性。让使用者以最小的代价接入。想要把自动装配玩的转,就必须要了解spring对于bean的构造生命周期以及各个扩展接口。

紫水木鱼的博客 1143

springboot提升-扩展接口

springboot, 扩展点, 扩展接口

wendao76的专栏 1086

这16个有用的 SpringBoot 扩展接口,居然还有人不知道?

我们从这些的扩展点当中,大致可以窥视到整个bean的生命周期。在业务开发或者写中间件业务的时候,可以合理利用spring提供给我们的扩展点,在spring启动的各个阶段内做一些事情。以达到自定义初始化的目的。此篇总结,如果有错误或者疏漏的地方,恳请指正。

m0_69632475的博客 985

【程序设计-Java】牢记这16个 SpringBoot 扩展接口,写出更加漂亮的代码

Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。

呱牛 Just do IT 1616
上一篇: SpringBoot扩展接口- ApplicationListener 事件监听器
下一篇: SpringBoot扩展接口- Bean实例化前后扩展点
zhanboring
博客等级 码龄11年 1粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值