温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java拦截器有何作用

发布时间:2026-09-18 19:50:00 来源:亿速云 阅读:98 作者:小樊 栏目:编程语言

在 Java 开发中,拦截器(Interceptor)是一种常见的横切关注点(AOP)实现方式,主要用于在程序执行的某个阶段“插一脚”,统一处理一些通用逻辑。不同框架中拦截器的叫法和实现略有差异,但核心作用是一致的。


一、拦截器的主要作用

1️⃣ 统一处理通用逻辑(核心用途)

避免在每个业务方法中重复写相同代码,例如:

  • 登录校验 / 权限验证
  • 接口鉴权(Token 校验)
  • 请求参数校验
  • 日志记录
  • 性能监控(请求耗时统计)

✅ 好处:解耦、可维护性强


2️⃣ 控制请求的执行流程

拦截器可以:

  • 放行请求(继续往下走)
  • 中断请求(直接返回,不进入 Controller / Action)

例如:

  • 未登录 → 直接返回 401
  • 权限不足 → 直接返回 403

3️⃣ 在请求前后做处理

典型生命周期(以 Spring 为例):

请求进入
 ↓
preHandle(前置处理)
 ↓
Controller 执行
 ↓
postHandle(后置处理)
 ↓
afterCompletion(最终处理,异常也能捕获)

可用于:

  • 前置:设置用户信息到上下文
  • 后置:统一封装返回结果
  • 完成后:释放资源、记录错误日志

4️⃣ 跨层通用能力增强

拦截器不关心具体业务逻辑,只关心“规则”:

  • 所有 /api/** 接口必须登录
  • 所有写操作必须有权限
  • 所有请求必须记录日志

二、常见 Java 拦截器场景

✅ Spring MVC 拦截器(HandlerInterceptor)

public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response,
                             Object handler) {
        // 登录校验
        return true; // false 则中断
    }
}

适用:

  • Web 请求拦截
  • 接口权限控制

✅ MyBatis 拦截器(Plugin)

用于:

  • SQL 打印
  • 分页插件
  • 数据脱敏
  • 多租户隔离

✅ Spring AOP(广义拦截器)

用于:

  • 方法级拦截
  • 事务
  • 日志
  • 缓存

三、拦截器 vs 过滤器(容易混)

对比项 过滤器(Filter) 拦截器(Interceptor)
所属 Servlet 规范 Spring 框架
执行时机 更早(请求进入容器) 进入 Controller 前
能拿到 Spring Bean ❌ ✅
使用场景 编码、跨域 登录、权限、日志

四、一句话总结

Java 拦截器的作用是:在不修改业务代码的前提下,统一拦截并处理请求或方法调用,实现权限、日志、监控等通用功能。

如果你用的是 Spring Boot / Spring MVC / MyBatis,我可以给你具体示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手