前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot 中,过滤器和拦截器的区别是什么?

Spring Boot 中,过滤器和拦截器的区别是什么?

作者头像
水货程序员
发布2018-11-13 17:11:23
3.5K0
发布2018-11-13 17:11:23
举报
文章被收录于专栏:javathings

过滤器和拦截器有相似之处,都能对 Servlet 请求二次加工。但是过滤器并不是 SpringBoot 规范中的概念,事实上,过滤器是 Servlet 规范中的事物。

因此过滤器和拦截器的最大区别就是他们存在的空间是不一样的。

Filter 拦截器是 Servlet 中的规范,它可不依赖于 Spring,它是由 Servlet 容器 Filter 每个请求和响应。它可以在请求到达 Servlet 之前就处,因此 Filter 也总是优先于 Interceptor 执行。

Interceptor 过滤器是工作在 Spring 容器中的,由 Spring 所控制,因此能和 Spring 紧密的结合,在 Spring 中使用拦截器,处理拦截行为更方便,事实上 Filter 能做的事情,Interceptor 也都能实现。

选用 Filter 还是 Interceptor, 官方有话

As a basic guideline, fine-grained handler-related preprocessing tasks are candidates for HandlerInterceptor implementations, especially factored-out common handler code and authorization checks. On the other hand, a Filter is well-suited for request content and view content handling, like multipart forms and GZIP compression. This typically shows when one needs to map the filter to certain content types (e.g. images), or to all requests.

对于 handler 相关的,尤其是抽取出的公共 handler 模块,可以使用 Interceptor,过滤器更适合内容控制,比如 Gzip 压缩等。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档