> Filter是Servlet规范,拦截范围广,执行早。Interceptor是Spring组件,只拦截Controller,粒度细,可访问Spring上下文。 这是一个非常经典且重要的面试题。Spring MVC的拦截器(Interceptor)和过滤器(Filter)都是面向切面编程(AOP)的实现,它们允许我们在请求处理的过程中执行一些通用操作,如日志记录、权限检查、性能监控等。 尽管它们功能相似,但在来源、执行时机、作用范围和功能粒度上有本质的区别。 --- 核心区别概览 为了方便理解,我们先用一个表格来总结它们的核心区别: | 特性 | Filter (过滤器) | Interceptor (拦截器) | | :--- | :--- | :--- | | 来源 (Origin) | Servlet规范 (Java EE标准) | Spring MVC框架 | | 依赖 (Dependency) | Servlet容器 (如Tomcat) | Spring容器 (IoC) | | 拦截范围 (Scope) | 拦截所有进入容器的请求 | 只拦截通过的请求 | | 执行时...