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

Spring Boot中GET请求/todo-list/user/list被映射至/error的原因排查

问题分析与解决

核心结论:你在拦截器中拿到的classMapping.value()值来自Spring默认的BasicErrorController——这说明你的请求根本没匹配到UserController的listGrid方法,而是触发了Spring的错误处理流程,拦截器才会拿到错误控制器的HandlerMethod。

下面是具体排查方向:

1. UserController未被Spring容器注册

检查UserController所在包是否在Spring的组件扫描范围内:

  • 如果启动类的@SpringBootApplication注解所在包是com.example.todolist,但UserController在com.example.user这类未被扫描的子包下,控制器不会被Spring识别。
  • 解决方法:调整包结构让控制器处于启动类所在包或其子包下,或者在启动类上添加@ComponentScan(basePackages = {"你的启动类包", "UserController所在包"})。

2. 拦截器逻辑触发异常跳转

检查拦截器preHandle方法的后续代码是否抛出未捕获的异常:

  • 一旦拦截器抛出异常,Spring会自动将请求转发到错误处理路径,此时handler会切换为BasicErrorController的方法。
  • 解决方法:给拦截器代码添加异常捕获逻辑,或调试后续代码定位异常点。

3. 请求匹配规则冲突或异常

  • 检查是否存在其他控制器的路径与/user/list冲突,比如有另一个控制器的方法路径相同但请求方法为POST,导致GET请求无法匹配触发错误。
  • 检查是否自定义了WebMvcConfigurer修改了请求匹配规则,比如禁用了默认映射策略、添加了自定义路径匹配器,导致/user/list无法被正确识别。

快速验证方法

暂时移除拦截器,直接请求/todo-list/user/list:

  • 如果能正常返回数据,说明问题出在拦截器逻辑;
  • 如果仍跳转到错误路径,说明是控制器注册或请求匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:50:20