在 Java 开发中,拦截器(Interceptor)是一种常见的横切关注点(AOP)实现方式,主要用于在程序执行的某个阶段“插一脚”,统一处理一些通用逻辑。不同框架中拦截器的叫法和实现略有差异,但核心作用是一致的。
避免在每个业务方法中重复写相同代码,例如:
✅ 好处:解耦、可维护性强
拦截器可以:
例如:
典型生命周期(以 Spring 为例):
请求进入
↓
preHandle(前置处理)
↓
Controller 执行
↓
postHandle(后置处理)
↓
afterCompletion(最终处理,异常也能捕获)
可用于:
拦截器不关心具体业务逻辑,只关心“规则”:
/api/** 接口必须登录public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) {
// 登录校验
return true; // false 则中断
}
}
适用:
用于:
用于:
| 对比项 | 过滤器(Filter) | 拦截器(Interceptor) |
|---|---|---|
| 所属 | Servlet 规范 | Spring 框架 |
| 执行时机 | 更早(请求进入容器) | 进入 Controller 前 |
| 能拿到 Spring Bean | ❌ | ✅ |
| 使用场景 | 编码、跨域 | 登录、权限、日志 |
Java 拦截器的作用是:在不修改业务代码的前提下,统一拦截并处理请求或方法调用,实现权限、日志、监控等通用功能。
如果你用的是 Spring Boot / Spring MVC / MyBatis,我可以给你具体示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。