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

Spring 3.1.5迁移后RequestMappingHandlerMapping重复映射问题咨询

Spring 3.1.5迁移后RequestMappingHandlerMapping重复映射问题排查

问题背景

将项目迁移至Spring 3.1.5版本后,发现RequestMappingHandlerMapping对同一接口(ArticleController#articleList(Pageable))输出了多次重复的映射日志,怀疑该现象异常,项目已启用Spring Security,需排查是否由过滤器导致。

相关日志信息

2023-11-17T05:43:49.145+09:00 DEBUG 67513 --- [p-nio-80-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.template.server.domain.article.controller.ArticleController#articleList(Pageable)
2023-11-17T05:43:49.145+09:00 DEBUG 67513 --- [p-nio-80-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.template.server.domain.article.controller.ArticleController#articleList(Pageable)
2023-11-17T05:43:49.145+09:00 DEBUG 67513 --- [p-nio-80-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.template.server.domain.article.controller.ArticleController#articleList(Pageable)
2023-11-17T05:43:49.146+09:00 DEBUG 67513 --- [p-nio-80-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.template.server.domain.article.controller.ArticleController#articleList(Pageable)
2023-11-17T05:43:49.146+09:00 DEBUG 67513 --- [p-nio-80-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.template.server.domain.article.controller.ArticleController#articleList(Pageable)
2023-11-17T05:43:49.146+09:00 DEBUG 67513 --- [p-nio-80-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.template.server.domain.article.controller.ArticleController#articleList(Pageable)
2023-11-17T05:43:49.146+09:00 DEBUG 67513 --- [p-nio-80-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.template.server.domain.article.controller.ArticleController#articleList(Pageable)
2023-11-17T05:43:49.146+09:00 DEBUG 67513 --- [p-nio-80-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.template.server.domain.article.controller.ArticleController#articleList(Pageable)
2023-11-17T05:43:49.147+09:00 DEBUG 67513 --- [p-nio-80-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.template.server.domain.article.controller.ArticleController#articleList(Pageable)
2023-11-17T05:43:49.147+09:00 DEBUG 67513 --- [p-nio-80-exec-4] o.s.web.servlet.DispatcherServlet        : GET "/api/v1/article?sort=createdAt,desc", parameters={sort:[createdAt,desc]}
2023-11-17T05:43:49.147+09:00 DEBUG 67513 --- [p-nio-80-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.template.server.domain.article.controller.ArticleController#articleList(Pageable)

当前日志级别配置

logging:
  level:
    org:
      springframework:
        web: debug
    org.springframework.web.servlet: debug
    org.hibernate.type.descriptor.sql.BasicBinder: trace

排查方向与分析

1. Spring Security过滤器链问题

这是最可能的诱因:

  • 检查自定义Security过滤器中是否重复调用filterChain.doFilter(request, response),该操作会导致请求被多次传入DispatcherServlet,触发多次映射日志。
  • 排查是否存在重复注册的过滤器,比如通过addFilter或addFilterBefore重复添加了同一过滤器实例,导致请求被多次处理。

2. RequestMappingHandlerMapping实例重复

查看项目启动日志,搜索RequestMappingHandlerMapping,确认容器中是否存在多个该类实例。如果自定义了RequestMappingHandlerMapping但未正确覆盖自动配置的实例,会导致多个实例同时处理请求映射,输出重复日志。

3. 日志配置重复导致冗余输出

当前日志配置中org.springframework.web: debug已经包含org.springframework.web.servlet的日志范围,重复配置可能导致日志被框架日志系统多次输出。可临时将org.springframework.web.servlet的日志级别改为info,验证是否还会出现重复日志。

4. 请求转发/重定向导致重复处理

检查过滤器或拦截器中是否存在请求转发逻辑,比如将请求转发到同一接口路径,导致DispatcherServlet多次处理同一请求,触发多次映射日志。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:10:59