news 2026/5/1 8:29:22

拦截器注册InterceptorRegistry 实现讲解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
拦截器注册InterceptorRegistry 实现讲解
1.核心概念

InterceptorRegistrySpring MVC提供的拦截器注册器,用于配置拦截器的拦截规则。

2.主要方法
addInterceptor(): 添加拦截器 addPathPatterns(): 指定要拦截的路径 excludePathPatterns(): 指定要排除的路径 路径匹配规则 /api/**: 匹配 /api/ 下的所有路径(包括多级子路径) /api/*: 只匹配 /api/ 下的一级路径 /api/user/login: 精确匹配某个具体路径
3.完整实现代码
​ package com.itheima.miniblog.core.interceptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; // 配置拦截器 @Configuration // 添加这个注解,让 Spring 识别这是一个配置类 public class WebMvcConfig implements WebMvcConfigurer { @Autowired private AuthInterceptor authInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { // 注册认证拦截器 registry.addInterceptor(authInterceptor) // 添加拦截器 .addPathPatterns("/api/**") // 拦截所有 /api/** 路径 .excludePathPatterns( // 排除以下路径(不需要登录验证) "/api/user/login", // 登录接口 "/api/user/register" // 注册接口 ); } }
4.详细解释

1. @Configuration 注解

@Configuration

告诉 Spring 这是一个配置类

Spring 会自动扫描并加载这个配置

如果没有这个注解,配置可能不会生效

2. registry.addInterceptor(authInterceptor)

registry.addInterceptor(authInterceptor)

将我们自定义的 AuthInterceptor 注册到 Spring MVC

authInterceptor 通过 @Autowired 自动注入

3. addPathPatterns("/api/")**

.addPathPatterns("/api/**")

指定拦截器要拦截的路径

** 表示匹配任意多级路径

例如会拦截:

/api/user/info

/api/article/list

/api/comment/add

4. excludePathPatterns(...)

.excludePathPatterns(

"/api/user/login",

"/api/user/register"

)

排除不需要登录验证的接口

即使这些路径匹配 /api/**,也不会被拦截

常见的排除路径:

登录接口

注册接口

验证码接口

公开的文章列表等

5.执行流程示例

场景 1:访问登录接口

请求: POST /api/user/login ↓ 匹配 /api/** ✓ ↓ 在排除列表中 ✓ ↓ 不执行拦截器,直接放行 ✓ 场景 2:访问用户信息接口 请求: GET /api/user/info ↓ 匹配 /api/** ✓ ↓ 不在排除列表中 ✓ ↓ 执行 AuthInterceptor.preHandle() ✓ ↓ 检查 Token,验证登录状态

扩展配置示例

如果你需要更复杂的配置,可以这样写:

@Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(authInterceptor) .addPathPatterns("/api/**") .excludePathPatterns( "/api/user/login", // 登录 "/api/user/register", // 注册 "/api/user/captcha", // 验证码 "/api/article/list", // 公开的文章列表 "/api/article/detail/**" // 公开的文章详情 ) .order(1); // 设置拦截器执行顺序(数字越小越先执行) }
6.常见问题

Q1: 为什么配置了拦截器但不生效?

检查是否添加了 @Configuration 注解 检查 AuthInterceptor 是否添加了 @Component 注解 检查路径是否正确匹配

Q2: 如何拦截多个不同的路径?

.addPathPatterns("/api/**", "/admin/**", "/user/**")

Q3: 如何排除某个目录下的所有接口?

.excludePathPatterns("/api/public/**") // 排除所有 /api/public/ 下的接口

这样配置后,所有访问 /api/** 的请求都会经过AuthInterceptor的验证,除了登录和注册接口可以直接访问。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 8:17:27

打开软件出现找不到vcomp140.dll文件 无法运行的情况 下载修复解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/5/1 5:03:30

汇编语言全接触-27.工具提示控件

我们将学习工具提示控件:它是什么如何创建和使用.下载例子理论:工具提示是当鼠标在某特定区域上停留时显示的一个矩形窗口.工具提示窗口包含一些编程者想要显示的文本.在这点上,工具提示同状态栏的作用是一样的,所不同的是工具提示当单击或者远离指定区域的时候就会消逝,你可能…

作者头像 李华
网站建设 2026/4/20 12:48:43

测试左移:构建软件质量的早期防线

在快速迭代的现代软件开发周期中,缺陷发现的时机直接影响项目成本、发布节奏与最终用户体验。传统软件测试模式中,测试活动往往集中于开发后期,导致缺陷修复成本高昂、返工风险加剧。测试左移作为一种前瞻性质量保障策略,通过将测…

作者头像 李华
网站建设 2026/4/28 20:01:31

串口通讯的android 封装开箱即用!提供源代码!

功能概述 本文档总结了在Android应用中使用serialportlibrary实现串口通讯功能的完整过程。通过本次开发,成功添加了以下核心功能: 串口设备的打开与关闭 数据的发送与接收 用户友好的操作界面 实现细节 1. UI界面修改 在activity_main.xml中添加…

作者头像 李华
网站建设 2026/4/29 9:45:15

张量并行 (Tensor Parallelism, TP) 深度解析

张量并行 (Tensor Parallelism, TP) 深度解析 1. TP 只能用于 Transformer 吗? 答案是:不,但它在 Transformer 上用得最多,也最有效。 咱们从 CV 的角度来类比。TP 的核心思想是“拆分矩阵乘法”。任何包含巨大矩阵乘法 (YX⋅WY …

作者头像 李华