提示:赶时间直接看总结
项目场景:
首先,项目我们有时习惯采用多模块开发,像这样:
这样的虽然麻烦了点,但好处还是有的。
问题描述:
当时遇到第一个麻烦就是,写一个简单的业务mapper->service->controller流程,启动却让很意外地报错:
典型的Bean扫描不到类型问题!
原因分析:
翻查代码,注解没漏,maven依赖没问题,再网上看了这兄弟的分享SpringBoot多模块开发时,bean无法注入以及请求404问题
学他在@SpringBootApplication中加上所需的扫描路径,问题可以解决。
可回去想了下,慢慢才突然想起一个设计底层的细节问题:SpringApplication扫描路径
其实就是,SpringApplication启动时在扫描过程中,只认识本包和它的子包,也就是说之外的包路径,它是默认不扫的。所以,在多模块情况下,可以的话,保证各模块的基础包路径同样即可。
解决方案:
如图:
问题也可搞定。
总结:
- 如果多模块的基础包路径由于某些原因做不到相同,那就像这样搞@SpringBootApplication(scanBasePackages={xxx.xxx.A,xxx.xxx.B}),但是这样还得补上web的包路径;
- 保证各模块基础包路径一致(如上图),无需加扫描(Mapper另说)。