SpringBoot 3的两种SPI加载方式

news2024/11/16 21:42:51

从spring boot 2.7.0发布后, 自动配置类的加载方式就发生了改变,原来从META-INF/spring.factories文件中加载,变为了从META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中加载,对应的加载实现类发生了改变,两者的加载实现类如下:

加载类加载文件
org.springframework.core.io.support.SpringFactoriesLoaderMETA-INF/spring.factories
org.springframework.boot.context.annotation.ImportCandidatesMETA-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

SpringFactoriesLoader

目前像org.springframework.context.ApplicationContextInitializer, org.springframework.boot.SpringApplicationRunListener, 以及org.springframework.context.ApplicationListener等SPI仍是由SpringFactoriesLoader进行加载,这部分没有变化。

但是原来的org.springframework.boot.autoconfigure.EnableAutoConfiguration已经从spring.factories中移徐,即不再由SpringFactoriesLoader进行加载,而是换成由ImportCandidates进行加载。

ImportCandidates

从类注释上说明,该类从springboot 2.7开始用于自动配置类的import逻辑:
// todo ImportCandidates类注释截图

用于加载的load(Class<?> annotation, ClassLoader cl)方法的加载逻辑也很清晰,指定Annotation类,从固定路径中加载相应的SPI扩展类:
在这里插入图片描述

以自动配置类为例,对应的Annotation类为org.springframework.boot.autoconfigure.AutoConfiguration, 加载路径就是:META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

这部分处理逻辑在AutoConfigurationImportSelector.getAutoConfigurationEntry(AnnotationMetadata)方法中,该方法主要获取自动配置的入口:
在这里插入图片描述
在这里插入图片描述

后续

目前可能有其它的API也是由ImportCandidates加载,但没有继续深入了, 在以后也将会有越来越多的SPI扩展由ImportCandidates加载,所以简单的对ImportCandidates进行了了解和分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1975370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu下python3.12安装, 分布式 LLM 推理 exo 安装调试过程, 运行自己的 AI 集群

创作不易 只因热爱!! 热衷分享&#xff0c;一起成长! “你的鼓励就是我努力付出的动力” —调试有点废,文章有点长,希望大家用心看完,肯定能学废,感谢. 1. Ubuntu下python3.12安装 1.1 导入 Python 的稳定版 PPA,不用编译 sudo add-apt-repository ppa:deadsnakes/ppa sudo…

82.WEB渗透测试-信息收集-框架组件识别利用(6)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;81.WEB渗透测试-信息收集-框架组件识别利用&#xff08;5&#xff09; log4j/log4j2&…

《Excelize权威指南》新书发布

在数据洪流涌动的数字化时代&#xff0c;数据处理与分析已跃升为解锁无限洞察力的金钥匙&#xff0c;赋能商业智慧、重塑医疗健康版图、驱动教育科研创新。然而&#xff0c;当数据量级爆炸式增长&#xff0c;传统工具如 Excel 虽被誉为数据处理领域的常青树&#xff0c;其手动操…

modelsim仿真quartus IP

开发环境&#xff1a;quartus prime pro 20&#xff1b;modelsim se-64 10.6d 1. 生成Altera的IP库 使用quartus生成IP库&#xff0c;需要使用Simulation Library Compiler&#xff08;Tools->Launch Simulation Library Compiler&#xff09; 如下图操作&#xff0c;选择…

车载音频开发(一):从看懂wav开始

背景介绍&#xff1a;随着电车的发展势头迅猛&#xff0c;国内车载音频也成为电车火热宣称的势头&#xff0c;要想深入了解车载音频&#xff0c;那首先还是得从最为普通的音频文件WAV开始。 我们都知道&#xff0c;计算机只能存储数字&#xff0c;声音确实靠不同频率的波组成&a…

RabbitMQ的快速入门

目录 前言 1. 安装RabbitMQ 2.基本结构 3. RabbitMQ消息模型 ​​​​​​4. 入门案例 4.1 publisher实现 4.2 consumer实现 4.3 总结 前言 RabbitMQ是一套开源&#xff08;MPL&#xff09;的消息队列服务软件&#xff0c;是由 LShift 提供的一个 Advanced Message Q…

达梦数据库的系统视图v$cachesql

达梦数据库的系统视图v$cachesql 达梦数据库的系统视图V$CACHESQL的主要作用是提供缓冲区中SQL语句的信息&#xff0c;在 ini 参数 USE_PLN_POOL !0 时才统计。通过查询这个视图&#xff0c;用户可以了解SQL语句在缓冲区中的执行情况&#xff0c;包括SQL节点的类型、进入次数、…

滚珠丝杆与丝杆支撑座:稳定性与精度的双重保障

丝杆支撑座是连接滚珠丝杆与电机的轴承&#xff0c;采用优质的轴承能确保支撑座与滚珠丝杆之间的刚性平衡。那么&#xff0c;滚珠丝杆搭连接杆支撑座有哪些优缺点呢&#xff1f; 正常情况下&#xff0c;丝杆支撑座能够提供稳定的支撑力&#xff0c;确保滚珠丝杆在复杂工况下保持…

使用PasteSpider实现类似Jenkins的功能,让你的2G服务器也可以飞起

获取你接触过Jenkins&#xff0c;在我理解就是拉取源码&#xff0c;然后构建成镜像&#xff0c;最后启动容器&#xff01; 这个步骤你在PasteSpider上也可以实现&#xff0c;以下案例使用svn作为源码管理 如果你使用git作为源码管理&#xff0c;道理差不多 以我的代码为例 …

假期BUUCTF小练习3

文章目录 [极客大挑战 2019]BuyFlag[BJDCTF2020]Easy MD5[HCTF 2018]admin第一种方法 直接登录第二种方法 flack session伪造第三种方法Unicode欺骗 [MRCTF2020]你传你&#x1f40e;呢[护网杯 2018]easy_tornadoSSTI注入 [ZJCTF 2019]NiZhuanSiWei [极客大挑战 2019]BuyFlag 一…

好用的AI智能写作助手,创作者必备

随着科技的不断发展&#xff0c;人工智能&#xff08;AI&#xff09;在各个领域都起到了革命性的作用。在写作领域&#xff0c;AI智能写作助手已经成为了创作者们的必备工具。这些智能助手通过强大的自然语言处理能力和深度学习算法&#xff0c;能够帮助创作者们提高写作效率、…

网络安全领域含金量最高的5大赛事,每个网安人的梦!

做网络安全一定要知道的5大赛事&#xff0c;含金量贼高&#xff0c;如果你能拿奖&#xff0c;国内大厂随你挑&#xff0c;几乎是每个有志网安人的梦&#xff01; 一、 DEF CON CTF&#xff08;DEF CON Capture the Flag&#xff09; DEF CON CTF是DEF CON黑帽大会上的一项著名…

grep工具的使用

grep [options]…… pattern [file]…… 工作方式&#xff1a; grep 在一个或者多个文件中搜索字符串模板&#xff0c;如果模板中包括空格&#xff0c;需要使用引号引起来&#xff0c;模 板后的所有字符串会被看作是文件名。 工作结果&#xff1a;如果模板搜索成功&#xf…

算法力扣刷题记录 六十三【回溯章节开篇】

前言 开始回溯章节学习。 在二叉树中预先体会了回溯。那么回溯单独来说是怎么回事&#xff1f; 一、基础知识学习 回溯基础知识参考链接 二、组合问题 2.1题目阅读 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答…

C#--DirectShowLib 关闭自动白平衡和自动曝光时间

一、前言 因项目需要需关闭相机自身的自动白平衡和自动曝光时间&#xff0c;统统设定为恒定值&#xff0c;开始实验了opencvCvSharp&#xff0c;但是不起作用&#xff0c;故实验了更底层的 DirectShowLib &#xff0c;可成功关闭相机自带的自动白平衡和自动曝光时间&#xff0c…

用script实现的一个简易计算机

目录 一、计算器原理 二、源码 三、结果展示 四、不足与改进 一、计算器原理 首先我们列出想象中简易计算器的样子&#xff1a; 虽然画的磕碜但是应该不影响下面的操作hh 首先想到用表格形式在网页中表示它&#xff0c;是一个5行4列的表格&#xff0c;接着要实现计算器的…

ShardingSphere中的ShardingJDBC常见分片算法的实现

文章目录 ShardingJDBC快速入门修改雪花算法和分表策略核心概念分片算法简单INLINE分片算法STANDARD标准分片算法COMPLEX_INLINE复杂分片算法CLASS_BASED自定义分片算法HINT_INLINE强制分片算法 注意事项 ShardingJDBC Git地址 快速入门 现在我存在两个数据库&#xff0c;并…

【传知代码】Flan-T5 使用指南(论文复现)

当今&#xff0c;自然语言处理技术正在以前所未有的速度和精度发展。在这个领域中&#xff0c;Flan-T5作为一种新兴的预训练语言模型&#xff0c;正吸引着广泛的关注和应用。Flan-T5不仅仅是一个强大的文本生成工具&#xff0c;它还能通过提供高效的语义理解和多任务学习能力&a…

【java计算机毕设】智慧校园管理系统MySQL springboot vue HTML maven寒暑假小组设计项目源码作业带文档安装环境

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】智慧校园管理系统MySQL springboot vue HTML maven寒暑假小组设计项目源码作业带文档安装环境 2项目介绍 系统功能&#xff1a; 智慧校园管理系统包括管理员、用户、老师三种角色。 管理员功能包括个人中心…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 团队关系判定(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题…