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. 分布式事务初探 一般来说,目前市面上的数据库都支持本地事务,也就是在你的应用程序中,在一个数据库连接下的操作,可以 ...
最新文章
- 211高校神级硕士论文刷屏!75行字错了20行!学校回应:导师停招
- [转]搞ACM的你伤不起(转自Roba大神)
- Windows 下面的 redis GUI操作工具
- python 双边滤波与高斯滤波
- live555 源码分析:RTSPServer 组件结构
- python not in range1002无标题_Python中偶尔遇到的细节疑问(一):去除列名特殊字符、标准差出现nan、切片索引可超出范围、range步长、众数...
- STM8单片机定时器1编码器功能使用详解
- 我的GitHub Blog开通了
- 【搜索-剪枝-偏难】PAT-天梯赛-L3-015. 球队“食物链”
- 计算机软件怎么装,电脑拷贝的软件怎么安装
- 防止网页被嵌入iframe广告代码
- B 罗马数字 2018浙江理工大学新生赛
- 微信小程序大转盘抽奖
- 腾讯信鸽集成华为厂商通道
- 计算机课听后评课稿,教师听课反思(评课记录)
- 愤怒大叔-喝酒聚会游戏
- 烟雨PHP图床程序源码
- 大学电路题目怎么搜_电路,中国大学MOOC(慕课)答案公众号搜题
- 单芯片快速以太网MAC控制器DM9000介绍
- 诺基亚手机软件设计大赛