SpringBoot利用Spring SPI机制实现自动按顺序加载注册JavaBean到容器中
创始人
2024-02-26 12:44:37
0

前言:
1、SPI机制(Service Provider Interface),服务提供接口,主要是用来解耦,资源文件目录下的 \resources\META-INF\spring.factories 我们把它归纳为Spring为我们提供的SPI机制,通过这种机制,我们可以在不修改Spring源码的前提下,非常轻松地做到对Spring框架的扩展开发

一、spring.factories 文件中存放需要自动注册的类全路径名

1、spring.factories 文件中我们自定义的类

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.hkl.mpjoin.modules.dto.DtoTestTwo,\
com.hkl.mpjoin.modules.dto.DtoTestFour

2、由于我们把注册JavaBean到Spring容器的任务交给SpringBoot了,所以不需要在类标注 @Component或@Configuration 注解了,去掉就行,如下:

说明:
【1】使用了 spring.factories 实现自动注册,就没必要再使用 @Component或@Configuration 了
【2】@Component、@Configuration、自动注册,这三者的加载优先级为:@Component > 自动注册 > @Configuration

3、我们可以使用 @AutoConfigureOrder(0) 来控制配置类的加载先后顺序,从而可以使用 @ConditionalOnMissingBean、@ConditionalOnBean 等这类条件注解来控制实例注册的前置条件

@AutoConfigureOrder(1)
public class DtoTestFour {/*** 

验证自动配置类加载顺序,@Bean作用的实例条件限制等

*

在最后加载的配置类中,才可以使用先加载的配置类中的@Bean标注的实例

** @author hkl* @date 2022/11/28*/@Bean(name = "dtoTestOne2")@ConditionalOnMissingBean(name = "dtoTestOne2")public DtoTestOne dtoTestOneTemp() {DtoTestOne dtoTestOne = new DtoTestOne();dtoTestOne.testStra = "刘七";System.out.println("dtoTestOneTemp跑了");return dtoTestOne;}}

说明:
【1】@AutoConfigureOrder(0) 的值默认为0,值比0越大加载的优先级越低,也就是说值越大加载顺序越靠后

二、SpringBoot自动注册大致流程:

 

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...