前言
趁着暑假时间进行的个人项目开发,将在后期开源出来,是我这个菜狗对所学知识的整合,欢迎多多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
本文学习了这位大佬的文章,在此致谢!
如果有更多其他的问题也可以询问,力所能及之处一定回答。如果有想法一起玩开发的,也欢迎私信我!!