SpringBoot 对客户端请求的拦截有大概三种常用拦截方式
- 过滤器
- 拦截器
- 监听器
另外还有一种基于AOP的接片拦截 Aspect ,好像没多用过。
流程
对比
相同点:都可以对客户端请求进行拦截,都可以用于打印访问日志 不同点:
初始化 | 实现 | 数据 | 功能 | |
---|---|---|---|---|
过滤器 | APP启动是初始化,停止时销毁 | Servlet 规范 | 原始request和response | URL内容过滤,权限控制 |
拦截器 | Spring加载配置文件时初始化 | 继承Spring的HandlerInterceptor / AOP | 原始的Request、Response和所有的controller及方法名,但无法获取方法的参数信息 | 性能分析,权限检查 |
监听器 | APP启动初始化 | Servlet 规范 | servletContext、HttpSession和servletRequest等域对象的创建和销毁事件 | 统计在线人数/销毁临时数据 |
所以,实际项目需根据需求选择使用何种方式拦截请求。