项目背景,在做项目时使用了一套别人的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. Linux下的redis的持久化,主从同步及哨兵
  2. 转:SAP 零售业POS心得分享
  3. 新浪api 40022错误
  4. .NET代码编写规范 整理
  5. java 对象重写tostring
  6. 拉5000万存款,银行客户经理能拿40万奖金?
  7. Mybaties配置一对多关系sql实例
  8. 别人家的工程师:阿里巴巴工程师有了新帮手,AI可帮助修Bug
  9. 散点图为什么是两组点_SAT数学易错点排雷之scatter plot
  10. Mahout-Pearson correlation的实现
  11. 语音识别人工智能解决方案
  12. 自定义rest api的基本思想过程--总结
  13. IIS7 大文件上传下载限制设置
  14. 计算机房在五楼英语,“我住在五楼”怎么用英语表达?
  15. 代码规范(Sonar, P3C)
  16. int 、long 和long long 区别
  17. 分享三种在Excel表格中自动求和的方法
  18. 师傅对徒弟有大小眼怎么办?
  19. Arduino-ESP8266库接口:Ticker.h
  20. 一个实现粒子爆炸效果的控件

热门文章

  1. Linux(程序设计):65---同步HTTP请求、异步HTTP请求
  2. matlab怎么标注极限,求助注释一段MATLAB极限腐蚀程序
  3. 剑指offer--20.顺时针打印矩阵
  4. 冈萨雷斯《数字图像处理》学习笔记(九)形态学图像处理
  5. 毕设总结(久等了~)
  6. 关于新书《修炼之道:.NET开发要点精讲》的各种说明
  7. 标量量化和矢量量化实验
  8. Flowable实战(二):表结构以及变量表单介绍
  9. 备品管理方案怎么写_设备借用管理制度
  10. C++新手入门学习教程