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
相关产品推荐
相关产品推荐

