Filter 和 HandlerInterceptor 以及Spring AOP的异同

相同点

都能将某些横切代码提炼出来,然后通过拦截的方式,添加到被拦截的方法或请求,从而降低代码耦合度和复杂度。

其中Filter和Spring的HandlerInterceptor设计思想相同,都是通过链式的方式。即将一组Filter或者HandlerInterceptor定义好,放在配置文件中,然后通过容器加载,然后顺序调度。Filter的容器是Tomcat,HandlerInterceptor的容器是Spring。

同时Filter和HandlerInterceptor都是针对web请求拦截处理

不同点

Filter更原生,基于Servlet框架即可实现

HandlerInterceptor基于Spring,需要Spring MVC Framework的支持

Spring AOP,基于AspectJ,典型的面向切面编程,他不局限于Web应用,功能更强大,使用也更复杂点。