springboot核心基础之spring.factories机制

本文介绍了Spring Boot如何使用SPI机制加载不在默认扫描路径下的Bean,特别是通过spring.factories文件实现第三方类的加载。详细讲解了Spring Boot中的SPI原理,以及SpringFactoriesLoader类的工作方式。同时,分析了spring-boot包中的spring.factories文件,展示了如何在SDK或Starter中应用此机制。
摘要由CSDN通过智能技术生成

前言

在java spring cloud项目中,我们常常会在子模块中创建公共方法,那么在另外一个子模块中,需要加载配置文件的时候,往往Spring Boot 自动扫描包的时候,只会扫描自己模块下的类。这个是springboot约定俗成的内容。

抛出问题

如果想要被Spring容器管理的Bean的路径不再Spring Boot 的包扫描路径下,怎么办呢?也就是如何去加载第三方的Bean 呢?

目前较通用的方式有2种,一是使用注解进行实例化,而是使用spring.factories机制。

这里我们使用Swagger的配置来做实验。

 首先一个Swagger的配置类:SwaggerConfig,工程结构如下:

springboot核心基础之spring.factories机制

发现我的SwaggerConfig 类和 SpringBoot 的启动类ConfigApplication.java 不在同一级目录下,按照springboot启动机制,以当Spring Boot 自动扫描包的时候,是扫描不到我的SwaggerConfig 的配置的,也就在控制台没有Swagger的打印的信息:

springboot核心基础之spring.factories机制

所以这时候我如果想要把SwaggerConfig 加载到Spring容器中的话 要怎么办呢?下面介绍上面提到的2种方式:

方法解决

方法一:在Spring Boot Application 主类上使用@Import注解。

springboot核心基础之spring.factories机制

关于@Import 注解有不懂的同学,建议自行学习。

方法二:创建spring.factories文件

现在我们将其改造一下,采用sp

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值