Spring boot 子模块不同包名下controller接口404问题解决方案

项目背景,在做项目时使用了一套别人的Spring boot三方开源系统当基础框架,然后在此系统基础上增加子模块,书写新的controller接口和业务逻辑。项目结构如下图:
project
system是@SpringBootApplication标注类所在的主工程模块,statistics是我建立的子模块,我在该子模块下建立了controller接口,也进行了注解,但是启动后访问该接口,提示404错误找不到该接口。

经过排查解决过程如下:

1、@SpringBootApplication标注类一定要增加@ComponentScan标注,标识主模块包名+子模块包名

1
2
org/jeecg/JeecgSystemApplication.java
@ComponentScan({"org.jeecg.*","com.huani.*"})

2、务必在主模块pom.xml中依赖子模块,网上很多教程根本没说这一步,只说使用@ComponentScan标注,只使用@ComponentScan标注,亲测无效!

maven

3、@ComponentScan标注了,主模块pom.xml把子模块也导入后,务必刷新maven依赖,否则还是不会生效,不要以为直接run就可以了,我就是被这里坑了一下午,点击Reload project

reload

4、mybatis 记得修改 @MapperScan

1
2
org/jeecg/config/mybatis/MybatisPlusSaasConfig.java
@MapperScan(value={"org.jeecg.modules.**.mapper*","com.huani.**.mapper*"})

5、这时可以运行了,各位可以看到,刷新请求不在是404了 打完收工!

zhengchang