当前位置: 首页 > article >正文

启动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注解就可以保证写的扫描包路径不被覆盖掉


http://www.kler.cn/a/291935.html

相关文章:

  • AI大模型如何重塑软件开发流程:智能化与自动化的新时代
  • SOP搭建:企业标准化操作程序构建与实施指南
  • 每行数据个数在变的二维数组的输出
  • PMP--一、二、三模、冲刺--分类--变更--技巧--特点
  • 【Hadoop实训】Hive 数据操作②
  • vue如何实现组件切换
  • 编程效率革命:智能工具与自动化脚本的完美结合
  • 144. 腾讯云Redis数据库
  • MOM成功实施分享(三)数字化项目落地蓝图经验分享
  • 2024 高教社杯 数学建模国赛 (B题)深度剖析|生产过程中的决策问题|数学建模完整代码+建模过程全解全析
  • echarts多个环形图
  • Linux 进程与线程相关函数及进程间通信方法
  • 基于微信小程序的挂号管理系统-web管理端
  • 酒店预约小程序搭建,让酒店更加智能化
  • SQLite 创建表:一场数据库里的“造物运动”
  • controlnet reference only
  • 微信小程序:如何在实现页面之间的返回
  • 一篇文章带你走进测试工程师的世界
  • C++ 中的const关键字
  • 前端框架vue3中的条件渲染(v-show,v-if,v-else-if,v-else)
  • Linux——网络(5)
  • 9.3 k8s介绍
  • 【高等代数笔记】(14-17)N阶行列式
  • Spring启动流程
  • 【C-实践】一对一的网络通信(tcp+select)
  • 在Python中,文本查找和替换的常用操作