服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - SpringBoot 自动扫描第三方包及spring.factories失效的问题解决

SpringBoot 自动扫描第三方包及spring.factories失效的问题解决

2023-05-07 17:17迷路的圆 Java教程

这篇文章主要介绍了SpringBoot 自动扫描第三方包及spring.factories失效的问题,本文给大家分享最新解决方法,需要的朋友可以参考下

为什么会找不到

Spring 依赖注入 就是要让spring找到要注入的类 并且识别到了 @Component、@Service 等注解。

1. 当在开发的第三方包里写明了 @Component、@Service 等等

2. 引入了包,不论第三方库的引入,还是本地jar。总之是要引入到工程的

这时候还加入不到 IOC 容器,那就说明SpringBoot工程没有扫描到这些类。

解决方法

1. componentScan 或者SpringBootApplication(scanBasePackages= )

?
1
2
3
4
5
6
@SpringBootApplication
@ComponentScan(basePackages = {"com.example.gradlespringbootdemo","com.example.gradlespringboottest"})
public class GradleSpringbootTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(GradleSpringbootTestApplication.class, args);
    }

SpringBootApplication 是个三合一的注解,其中就包含了ComponentScan 。本身是要默认扫描范围的,手动加入ComponentScan后,默认就失效了。要手动加回来

2. 写自动配置类

这种方法的原理与上一个其实是一样的,实际作用还是在目标上加入了componentScan 的扫描注解

3. spring.factories文件

SpringBoot 自动扫描第三方包及spring.factories失效的问题解决

?
1
2
3
4
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
 com.example.gradlespringbootdemo.service.TestService\
 AbcClass\
 DefClass

当开发第三方包时,可以使用这种方法。这样使用这个包的springboot工程就可以自动扫描到了。其实就时springboot启动时会扫描依赖jar包下的这个路径的spring.factories文件。这个文件可以写很多配置,例如Listener等。

如上代码将需要被扫描的类都写进去。

spring.factories 失效

这是版本问题,新的版本不再支持spring.factories文件了。改为上图中一长串那样的写法 即 META-INF\spring\org.springframework.boot.autoconfigure.EnableAutoConfiguration.imports这样,就是把原来的配置单独形成文件,直接把要扫描的类写进这个文件就可以了,每行写一个,像这样

SpringBoot 自动扫描第三方包及spring.factories失效的问题解决

到此这篇关于SpringBoot 自动扫描第三方包及spring.factories失效的问题的文章就介绍到这了,更多相关SpringBoot 自动扫描第三方包内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/lostO/archive/2023/05/06/17377227.html

延伸 · 阅读

精彩推荐