在Spring MVC配置类中应实现WebMvcConfigurer接口重写addInterceptors方法,通过InterceptorRegistry精确设置includePathPatterns和excludePathPatterns控制拦截路径,支持Ant风格通配符,排除路径优先级高于包含路径,多拦截器按order值或添加顺序执行。

在 Spring MVC 的 Java 配置类中重写 addInterceptors 方法,核心是通过 InterceptorRegistry 精确控制拦截路径(include)和排除路径(exclude),避免全局误拦或漏拦。
继承 WebMvcConfigurer 并重写 addInterceptors
不要继承过时的 WebMvcConfigurationSupport(会覆盖 Spring Boot 自动配置),而是实现 WebMvcConfigurer 接口:
- 定义一个带
@Configuration注解的配置类 - 重写
addInterceptors(InterceptorRegistry registry) - 调用
registry.addInterceptor(...)添加自定义拦截器实例
用 registry.addInterceptor() 指定拦截路径
每个拦截器需显式声明生效路径,支持 Ant 风格通配符(如 /**、/api/**、/admin/**),不设则默认不拦截任何路径:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
-
.includePathPatterns("/api/**", "/user/profile")—— 只拦截匹配这些路径的请求 - 路径必须以
/开头,如"/*.html"不生效,应写为"/**/*.html"或"/login.html" - 多个 include 可链式调用,也可传入字符串数组
用 excludePathPatterns 排除特定路径
排除规则优先级高于 include,常用于放过静态资源、登录接口、健康检查等:
立即学习“Java免费学习笔记(深入)”;
.excludePathPatterns("/login", "/logout", "/static/**", "/actuator/**")- 排除路径也支持 Ant 模式,且支持正则(需配合
excludePathPatternRegex(),但较少用) - 注意:exclude 是对当前拦截器生效,不是全局排除;不同拦截器可有不同 exclude 规则
拦截器顺序与多拦截器管理
若注册多个拦截器,执行顺序按添加顺序决定,可通过 order(int) 显式控制(数值越小越先执行):
registry.addInterceptor(authInterceptor).includePathPatterns("/api/**").excludePathPatterns("/api/public/**").order(1)registry.addInterceptor(loggingInterceptor).includePathPatterns("/**").order(2)- 未指定 order 时,默认值为
0,建议显式设置避免隐式依赖

















