springboot分模块项目下@SpringBootTest注解在遇到多个启动类上的@SpringBootApplication时出现的问题
springboot分模块项目下编写测试类踩的坑qwq
前言
趁着暑假时间进行的个人项目开发,将在后期开源出来,是我这个菜狗对所学知识的整合,欢迎多多star~~ 也欢迎各位大佬的指点和不吝赐教!
正文
先讲一下项目结构:

- authorization - 权限及安全模块
- commons - 通用模块
- datasource - 数据源模块
- serve-api - 基础web服务模块
开发权限模块的时候,将datasource引入作为依赖,编写测试类。到这一步一切正常

application.yml 文件

启动后开始报错,其中两个主要错误:
java.lang.IllegalStateException: Found multiple @SpringBootConfiguration annotated classes [Generic bean: class [xxxxxxxx]]
关于这一个错误,网上有很多说法,我选择了两个最有可能的进行尝试
1. 项目下有多个@SpringBootAppliaction 注解标注的启动类;
2. 没有给数据源配置基础信息,像url,username等等
于是


改了
再跑,就出现了新错误

java.lang.IllegalStateException: Failed to load ApplicationContext
新的错误,看得出来是没有加载到 ApplicationContext。但是我们在authorization模块下跑的测试用的上下文就是这一个,也尝试过给 @SpringBootTest 注解加上class属性值,仍然报错。所以没招了。这一个留给大佬帮忙解惑了
后来想到在web模块跑项目时,虽然其他模块都被引入而且也有好几个@SpringBootApplication注解的启动类,但是项目没有报错。于是转到web模块下去测试
破题
前言
web模块同样导入了权限模块和数据模块为依赖,并在启动类处指定扫描整个包
正文
做两个准备:
1. 改 application.yml 配置信息

2.给@SpringBootTest注解指定扫描的启动类

总算是解决了!

感悟
至于无法在权限模块解决必须迁到web服务模块解决的原因,实话说我是真不懂,个人感觉两个点
1. 出错的原因在于单元测试:@SpringBootTest
2. 需要的配置信息:application.yml
本文学习了这位大佬的文章,在此致谢!
如果有更多其他的问题也可以询问,力所能及之处一定回答。如果有想法一起玩开发的,也欢迎私信我!!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)