You need to enable JavaScript to run this app. Spring Boot应用运行正常,访问UserController接口返回404错误
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot应用运行正常,访问UserController接口返回404错误

Spring Boot 接口返回404 排查解决步骤

当前代码可正常启动、依赖齐全,但访问/users相关接口返回404,按出现概率从高到低排查:

1. 最高发原因:包扫描规则不匹配

Spring Boot 默认只会扫描主启动类(带@SpringBootApplication注解的类)所在的包及其所有子包下的组件类(包括标注了@RestController的类)。
你的UserController当前的包路径是独立的根包controller,如果主启动类建在比如com.xxx.project这类业务根包下,controller包和主启动类包是平级关系,完全不在默认扫描路径范围内,Spring根本没有把这个Controller注册到Web容器里,自然访问就会404。

对应解决方法:

  • 方案一:调整Controller的包路径,移动到主启动类所在包的子目录下,比如主启动类在com.demo,就把UserController的包改成com.demo.controller
  • 方案二:如果不想调整包路径,直接在主启动类上显式指定扫描范围:
@SpringBootApplication(scanBasePackages = {"controller", "其他需要扫描的业务包路径"})
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

2. 检查全局上下文路径配置

如果项目在配置文件中设置了server.servlet.context-path(全局访问前缀),实际接口的完整路径会自动带上这个前缀,直接按原注释里的localhost:8080/users访问就会404。

  • 检查配置文件(application.properties或application.yml)的配置项:
    比如yml配置里如果有:
    server:
      servlet:
        context-path: /app
    
    那实际访问地址需要改成localhost:8080/app/users

3. 验证接口映射是否被成功注册

启动项目后,在控制台日志中搜索/users,如果能看到类似如下的日志输出,说明接口注册成功:

Mapped "{[/users],methods=[GET]}" onto public java.lang.String controller.UserController.getUser()

如果完全找不到对应的映射日志,直接回到第一步排查包扫描问题即可。

4. 核对请求方法是否匹配

当前Controller的接口映射规则是:

  • GET请求/users → 返回"get the user"
  • POST请求/users → 返回"create user"
  • PUT请求/users → 返回"update user"
  • DELETE请求/users → 返回"delete user"
    注意:如果请求的路径正确但HTTP方法不匹配,部分版本的Spring Boot也会返回404,不要用浏览器直接输入地址(默认发GET请求)去测试POST/PUT/DELETE对应的接口。

额外说明:代码里creteUser存在拼写失误,正确拼写应为createUser,但这个问题不影响接口映射逻辑,不会导致404,仅为代码不规范问题。


内容的提问来源于stack exchange,提问作者abhinav gautam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 01:54:03