You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中RestController端点无法识别导致404错误的问题求助

排查Spring Boot /custom端点404问题

看起来你的包结构确实符合Spring Boot自动扫描的要求,但还是有几个常见的点可能导致控制器没被识别,我给你梳理下排查步骤:

1. 先看启动日志,确认控制器是否被注册

启动项目时,仔细看控制台日志,搜索有没有类似这样的输出:

Mapped "{[/custom],methods=[GET]}" onto public org.springframework.http.ResponseEntity<java.lang.Void> com.myproject.controller.CustomPathController.test()

如果完全找不到这条日志,说明你的CustomPathController根本没被Spring扫描到,那就要重点排查组件扫描的问题;如果有这条日志,那问题出在请求路径或者拦截环节。

2. 检查Web依赖是否完整

Spring Boot的Web控制器需要依赖spring-boot-starter-web才能生效,确认你的构建文件(pom.xml或build.gradle)里已经引入了这个依赖:

Maven示例:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Gradle示例:

implementation 'org.springframework.boot:spring-boot-starter-web'

如果没加这个依赖,Web相关的注解(比如@RestController、@GetMapping)都不会被Spring处理,自然不会生成端点映射。

3. 确认组件扫描范围是否正确

虽然@SpringBootApplication默认会扫描启动类所在包(com.myproject)及其所有子包,但如果你的项目里有其他自定义的@ComponentScan注解(比如在其他配置类上),可能会覆盖默认的扫描范围。

检查所有配置类,确保@ComponentScan的basePackages包含了com.myproject.controller,比如:

@ComponentScan(basePackages = {"com.myproject", "com.myproject.controller"})

如果没有自定义的@ComponentScan,这一步可以跳过,但如果有,一定要保证范围覆盖到控制器所在包。

4. 检查请求路径是否正确

确认你访问的路径是否和控制器配置一致:

  • 如果项目没有设置上下文路径,访问地址应该是 http://localhost:你的端口/custom
  • 如果application.properties或application.yml里设置了server.servlet.context-path=/xxx,那访问地址要改成 http://localhost:你的端口/xxx/custom

另外,检查端口是否正确,默认是8080,如果你改了端口,要对应上。

5. 排查拦截器/过滤器是否拦截了请求

如果项目里有自定义的Filter或Interceptor,检查它们的路径匹配规则,是否把/custom路径的请求拦截了。比如有些Filter会设置url-pattern=/*,但没有放行特定路径,导致请求还没到控制器就被拦截了。

可以暂时注释掉自定义的拦截器/过滤器,再测试请求是否能正常访问,来排查这个问题。

额外小技巧

如果以上步骤都没解决,你可以尝试在CustomPathController类上额外加上@Component注解(虽然@RestController已经包含了@Component,但偶尔会有特殊情况导致注解没被识别),然后重启项目试试。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:53:10