在接触拦截器和filter以来,觉得这两者有太多相似之处,都是运用aop的思想处理事情,但是这两者到底有什么区别倒一直很模糊,今天看书的时候,终于看到自己满意的解答了,赶紧记录下来:

1.使用范围不同,Filter是servlet规范规定的,只能用于web程序中,而拦截器是既可以用在web,也可以用在application下。

2.规范不同。Ftiler是在servlet规范规定的,是servlet容器支持的。而拦截器是在spring容器内的,是spring框架支持的。

3.使用的资源不同:同其他的代码块一样,拦截器也是spring的组件,归spring管理,配置在spring文件中,因此能使用spring里的任何资源、对象,例如service对象,数据源,事物管理等等,通过ioc注入到拦截器即可。而filter不能

4.深度不同:Filter在只在servlet前后起作用。而拦截器能够深入到方法前后、异常跑出前后,因此拦截器的使用具有更大的弹性。所以在spring构架的程序中,要优先使用拦截器。