项目背景,在做项目时使用了一套别人的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问题解决方案相关推荐

  1. spring boot+mybatisplus集成后访问项目接口404

    经检查发现,需要把启动类中@ComponentScan注解改为@MapperScan,之后重启项目访问正常

  2. Spring Boot 引入jar 包中的 controller

    [问题] Spring Boot 引入jar 包中的 controller [解决] 默认情况下 Spring Boot 在启动时, 只会扫描启动类对应的包以及子包进行装配, 因此jar包中的cont ...

  3. spring boot编写并运行HelloWorld服务接口

    spring boot编写并运行HelloWorld服务接口 在主程序上要加包扫描注解@ComponentScan("com.example.demo1") package com ...

  4. Spring Boot由jar包转成war包

    Spring Boot由jar包转成war包 spring boot 默认是以jar包形式启动web程序,在新建spring boot项目时候可以选择war包的启动方式. 建议在开发的时候建立以jar ...

  5. Spring Boot 发布 jar 包转为 war 包秘籍。

    转载自 Spring Boot 发布 jar 包转为 war 包秘籍. Spring Boot是支持发布jar包和war的,但它推荐的是使用jar形式发布.使用jar包比较方便,但如果是频繁修改更新的 ...

  6. Spring Boot 打成war包的方法

    Spring Boot 打成war包的方法 Spring Boot 打成war包的方法 SpringBoot写的项目,自身嵌入了tomcat,所以可以直接运行jar包.但是,每次启动jar包创建的都是 ...

  7. Spring Boot多模块包扫描问题

    Spring Boot多模块包扫描问题 1.@SpringBootApplication @SpringBootApplication(scanBasePackages = "cn.mypa ...

  8. Java spring boot 阿里云调用人脸识别接口,本地sdk上传到阿里云调用api

    Java spring boot 阿里云调用人脸识别接口 没有写测试类,工具类如下,有access_key_id和access_key_secret传参调用就可使用 代码如下: pom.xml依赖 & ...

  9. Spring Boot之基于Dubbo和Seata的分布式事务解决方案

    转载自 Spring Boot之基于Dubbo和Seata的分布式事务解决方案 1. 分布式事务初探 一般来说,目前市面上的数据库都支持本地事务,也就是在你的应用程序中,在一个数据库连接下的操作,可以 ...

最新文章

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

热门文章

  1. [day2]python网络爬虫实战:爬取美女写真图片(增强版)
  2. 掀开高级游戏黑客的面纱,教你打造游戏修改器
  3. 【Web技术】935- 深色模式适配指南
  4. CTO作为过来人,给20、30岁年轻人的5个学习方法!​
  5. 关于邮件服务器的dns解析及mx记录问题!
  6. wifi信号增强android,WiFi信号增强放大器app下载
  7. 大学生?!!你必须要理解的15件事!
  8. Excel也可以查询快递信息
  9. YJAutoLayout
  10. 推荐一个朋友做的资源网站