springboot分模块项目下@SpringBootTest注解在遇到多个启动类上的@SpringBootApplication时出现的问题

前言

趁着暑假时间进行的个人项目开发,将在后期开源出来,是我这个菜狗对所学知识的整合,欢迎多多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

 本文学习了这位大佬的文章,在此致谢!

如果有更多其他的问题也可以询问,力所能及之处一定回答。如果有想法一起玩开发的,也欢迎私信我!!

猜你喜欢

转载自blog.csdn.net/Ccc67ol/article/details/131880746