启动spring boot项目时,第三方jar包扫描不到的问题

讲述一下遇到的问题:

在启动类Application上使用@ComponentScan 这个注解来扫描第三方的包,然后就会出现报错。异常就是无法加载本地的bean,但是可以加载到第三方的bean;

了解过spring boot启动流程的都知道,Springboot启动类注解@SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan。其中扫描包的范围默认为启动类所在包和子包。如果我们需要扫描其他模块的包或者第三方的jar包,我们就要单独使用@ComponentScan注解扫描,或者直接在@SpringbootApplication注解中指定扫描的第三方路径。

但是,如果@SpringBootApplication和@ComponentScan注解在一个启动类中共存 ,那么**@SpringBootApplication注解的扫描的作用将会失效**,也就是说不能够扫描启动类所在包以及子包了,因为它被@ComponentScan注解中指定的包扫描覆盖了。

在这个启动类中,我们加上了@ComponentScan注解,并在这个注解上指定了一个路径,那么现在spring boot项目启动时就只会扫描com.zq.testspringboot包下的内容。不会再默认扫描启动类所在的包及其子包。

解决办法:

1、@SpringBootApplication和@ComponentScan注解在一个启动类中共存时,@ComponentScan中必须指定所有需要扫的包,不然没有指定的包就不会扫描到。这样就可以解决问题了,即可以扫描第三方jar包又可以扫描本地的路径

2、使用@ComponentScans注解,配置多个ComponentScan注解。

这种方法与之前第一种方法类似,都是在ComponentScan注解中指定所有要扫描的路径,不管是本地的还是第三方引入的。

3、配置包扫描建议单独 建立一个配置类加上@Configuration注解和@ComponentScan注解配置要扫描的包,并放到启动类所在包的子包下。

总之,只要不在同一个类中同时使用@SpringBootApplication注解和@ComponentScan注解就可以保证写的扫描包路径不被覆盖掉

相关推荐
paopaokaka_luck3 小时前
英语单词学习系统的设计与实现(基于艾宾浩斯遗忘曲线的智能复习机制、语音朗读、多题型测试与错题自动收录、Echarts图形化分析)
vue.js·spring boot·后端·echarts
爱敲代码的小鱼12 小时前
springboot原理篇:
java·spring boot·spring
默默敲代码的徐哥儿13 小时前
八股文整理——后端
java·开发语言·spring boot·后端·学习
牧小七13 小时前
宠物管理系统2026
spring boot
名字还没想好☜14 小时前
Spring Boot 全局异常处理:@ControllerAdvice 实战
java·spring boot·后端·spring·异常处理
宠友信息15 小时前
Redis 内容社区源码架构优化与即时通讯数据一致性处理
spring boot·后端·websocket·mysql·uni-app
hdsoft_huge15 小时前
SpringBoot系列06:RESTful接口开发,请求参数接收、全局跨域CORS完整配置
java·spring boot
小明bishe181 天前
计算机毕业设计之基于JAVA的植物科普网站
java·spring boot·spring·架构·课程设计
万亿少女的梦1681 天前
基于Python的高考志愿填报辅助系统设计与实现
java·spring boot·python·mysql·vue
万亿少女的梦1681 天前
基于SpringBoot与Vue的历史博物馆展品展示与游客管理系统设计
spring boot·mysql·vue·系统设计·博物馆管理系统