知识卡片
过滤器与拦截器的区别
内容
Filter(过滤器)源自Servlet规范,由Servlet容器本身提供支持,工作在更底层,可以处理请求与响应但自身不能直接产生响应内容;Interceptor(拦截器)由框架层(如Spring)提供,工作粒度更细,能明确划分出处理前(preHandle)、处理后(postHandle)、请求完全结束后(afterCompletion)三个介入时机,便于精确控制是否放行请求。两者都用于解决”同一段横切逻辑要在每个接口里重复调用”的问题,但介入的层级不同:Filter更靠近容器,Interceptor更贴近业务框架。发散:这类似于[[AOP面向切面编程的作用]]在Web请求处理场景下的两种不同实现层级——越靠近底层容器,能力越通用但控制粒度越粗;越靠近业务框架,控制越精细但耦合也越深。
参考来源
《Spring Boot应用开发实战》第2章《使用Spring Boot构建Web应用程序》