spring 中攔截器 與servlet 的filter 有相似之處.比如二者都是aop 編程思想的體現都能實現權限檢查,日志記錄等.
不同之處
- 使用范圍不同 Filter 是Servlet 規定的.只能用於web 程序.而攔截器既可以用於Web 程序,也可以用於Apllicatioon,Swing程序中。
- 規范不同:Filter是在SerVlet 規范定義的,是Servlet容器支持的。而攔截器是在Spring 容器內的,Spring 框架所支持的。
- 使用資源不同:同其他代碼塊一樣,攔截器也是一個Spring的組件,歸Spring 管理。配置在Spring 中,因此能使用Spring 中的任何資源,對象,例如Service對象,數據源,事務管理等。通過Ioc注入到攔截器即可。而filter 則不能。
- 深度不同:Filter 只在Servlet前后起作用,而攔截器能深入到方法前后,異常拋出前后因而攔截器的使用具有更大的彈性,所以在spring 中優先使用攔截器。
