Spring boot 子模块不同包名下controller接口404问题解决方案
项目背景,在做项目时使用了一套别人的Spring boot三方开源系统当基础框架,然后在此系统基础上增加子模块,书写新的controller接口和业务逻辑。项目结构如下图:
system是@SpringBootApplication标注类所在的主工程模块,statistics是我建立的子模块,我在该子模块下建立了controller接口,也进行了注解,但是启动后访问该接口,提示404错误找不到该接口。
经过排查解决过程如下:
1、@SpringBootApplication标注类一定要增加@ComponentScan标注,标识主模块包名+子模块包名
2、务必在主模块pom.xml中依赖子模块,网上很多教程根本没说这一步,只说使用@ComponentScan标注,只使用@ComponentScan标注,亲测无效!
3、@ComponentScan标注了,主模块pom.xml把子模块也导入后,务必刷新maven依赖,否则还是不会生效,不要以为直接run就可以了,我就是被这里坑了一下午,点击Reload project
4、这时可以运行了,各位可以看到,一个完全不同包名的子模块下的controller接口,在swagger中显示出来了,打完收工!
5、原理性的东西补充一下,Spring Boot在进行组件扫描时
5.1 如果你的其他包层次结构位于使用@SpringBootApplication标注主应用程序下方,则隐式组件扫描将自动涵盖。也就是说,不要明确标注@ComponentScan,Spring Boot会自动搜索当前应用主入口目录及其下方子目录。
5.2 如果其他包中的bean /组件不在当前主包路径下面,,则应手动使用@ComponentScan 添加,指定需要扫描的路径,他就会完全按你指定的路径进行扫描,所以你必须指定主工程、子模块所有的包名
5.3 如果使用了@ComponentScan ,那么Spring Boot就全部依赖你的定义,如果定义出错,会出现autowired时出错,报a bean of type that could not be found错误,让你很恼火哦。
Spring boot 子模块不同包名下controller接口404问题解决方案相关推荐
- spring boot+mybatisplus集成后访问项目接口404
经检查发现,需要把启动类中@ComponentScan注解改为@MapperScan,之后重启项目访问正常
- Spring Boot 引入jar 包中的 controller
[问题] Spring Boot 引入jar 包中的 controller [解决] 默认情况下 Spring Boot 在启动时, 只会扫描启动类对应的包以及子包进行装配, 因此jar包中的cont ...
- spring boot编写并运行HelloWorld服务接口
spring boot编写并运行HelloWorld服务接口 在主程序上要加包扫描注解@ComponentScan("com.example.demo1") package com ...
- Spring Boot由jar包转成war包
Spring Boot由jar包转成war包 spring boot 默认是以jar包形式启动web程序,在新建spring boot项目时候可以选择war包的启动方式. 建议在开发的时候建立以jar ...
- Spring Boot 发布 jar 包转为 war 包秘籍。
转载自 Spring Boot 发布 jar 包转为 war 包秘籍. Spring Boot是支持发布jar包和war的,但它推荐的是使用jar形式发布.使用jar包比较方便,但如果是频繁修改更新的 ...
- Spring Boot 打成war包的方法
Spring Boot 打成war包的方法 Spring Boot 打成war包的方法 SpringBoot写的项目,自身嵌入了tomcat,所以可以直接运行jar包.但是,每次启动jar包创建的都是 ...
- Spring Boot多模块包扫描问题
Spring Boot多模块包扫描问题 1.@SpringBootApplication @SpringBootApplication(scanBasePackages = "cn.mypa ...
- Java spring boot 阿里云调用人脸识别接口,本地sdk上传到阿里云调用api
Java spring boot 阿里云调用人脸识别接口 没有写测试类,工具类如下,有access_key_id和access_key_secret传参调用就可使用 代码如下: pom.xml依赖 & ...
- Spring Boot之基于Dubbo和Seata的分布式事务解决方案
转载自 Spring Boot之基于Dubbo和Seata的分布式事务解决方案 1. 分布式事务初探 一般来说,目前市面上的数据库都支持本地事务,也就是在你的应用程序中,在一个数据库连接下的操作,可以 ...
最新文章
- Linux下的redis的持久化,主从同步及哨兵
- 转:SAP 零售业POS心得分享
- 新浪api 40022错误
- .NET代码编写规范 整理
- java 对象重写tostring
- 拉5000万存款,银行客户经理能拿40万奖金?
- Mybaties配置一对多关系sql实例
- 别人家的工程师:阿里巴巴工程师有了新帮手,AI可帮助修Bug
- 散点图为什么是两组点_SAT数学易错点排雷之scatter plot
- Mahout-Pearson correlation的实现
- 语音识别人工智能解决方案
- 自定义rest api的基本思想过程--总结
- IIS7 大文件上传下载限制设置
- 计算机房在五楼英语,“我住在五楼”怎么用英语表达?
- 代码规范(Sonar, P3C)
- int 、long 和long long 区别
- 分享三种在Excel表格中自动求和的方法
- 师傅对徒弟有大小眼怎么办?
- Arduino-ESP8266库接口:Ticker.h
- 一个实现粒子爆炸效果的控件