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

Spring登录后获取用户信息遇404错误,求排查原因

嘿,我来帮你排查下这两个接口都返回404的问题,大概率是路由映射或者配置层面的问题,咱们一步步捋:

可能的原因及排查方向

1. Controller 请求路径配置错误

  • 先检查你的@RestController/@Controller类和方法上的路径注解:比如如果/user相关的Controller类标注了@RequestMapping("/api/user"),那直接访问/user肯定找不到,得用/api/user才行;同理/rest/home的方法是不是把@GetMapping("/home")写错成了@GetMapping("/hom")这类拼写错误?
  • 另外注意大小写问题,虽然Spring默认不区分路径大小写,但尽量保持请求路径和注解里的写法一致,避免不必要的坑。

2. Spring MVC 路径匹配规则冲突

  • 如果你用的是Spring Boot 2.6及以上版本,默认路径匹配策略从AntPathMatcher改成了PathPatternParser,它对/**这类模糊匹配的支持有变化,比如不允许路径中间出现//,或者某些通配写法会失效。可以试试在application.properties里添加配置切换回旧规则:
    spring.mvc.pathmatch.matching-strategy=ant_path_matcher
    
  • 还要检查有没有自定义WebMvcConfigurer配置了额外的路径前缀,比如统一给所有接口加了/api前缀,那实际访问路径就得是/api/rest/home而不是/rest/home。

3. 自定义注解未正确生效

  • 你提到用了自定义注解,比如权限校验类的注解?先确认注解的基础配置:@Target是不是标注了ElementType.METHOD或ElementType.TYPE,@Retention是不是RetentionPolicy.RUNTIME;对应的切面类(AOP)有没有加@Component和@Aspect注解,确保Spring能扫描到并生效。
  • 如果注解的切面逻辑里不小心拦截了请求并错误返回404,也会导致这个问题,可以暂时注释掉自定义注解,再测试接口能不能访问。

4. 组件扫描范围未覆盖Controller

  • 主配置类(带@SpringBootApplication的类)所在的包,要包含你的Controller、Service等组件。比如主类在com.myapp,但Controller在com.myapp.controller之外的包,那就要在@SpringBootApplication里手动指定扫描范围:
    @SpringBootApplication(scanBasePackages = {"com.myapp", "com.other.controller"})
    
  • 如果Spring扫不到你的Controller,自然就找不到对应的请求路径,返回404。

5. 上下文路径或端口配置错误

  • 检查application.properties里的端口和上下文路径:
    • 如果设置了server.port=8081,那访问地址得是localhost:8081/rest/home;
    • 如果设置了server.servlet.context-path=/myapp,那完整路径是localhost:8080/myapp/rest/home。

6. 快速排查小技巧

  • 打开Spring Boot的Debug日志,在配置文件里加:
    logging.level.org.springframework.web=DEBUG
    
  • 启动项目后,看日志里的RequestMappingHandlerMapping相关输出,它会列出所有Spring注册成功的请求映射,你可以直接查看有没有/user和/rest/home这两个路径——如果没有,说明Controller没被正确注册;如果有,再检查请求时的路径是否完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:07:51