1. 程式人生 > >spring的Aspect,Filter、Interceptor、ControllerAdvice區別

spring的Aspect,Filter、Interceptor、ControllerAdvice區別

1、filter,這是java的過濾器,和框架無關的,是所有過濾元件中最外層的,從粒度來說是最大的。

配置方式,有直接實現[email protected],@[email protected](第三方的filter)

2、interceptor,spring框架的攔截器

配置方式,@configuration+繼承WebMvcConfigurationSupport類新增過濾器。

3、aspect,可以自定義要切入的類甚至再細的方法,粒度最小。加個註解用效果更佳。

4、controllerAdvice,是controller的增強,和ExceptionHandler一起用來做全域性異常。

總結:

filter:和框架無關,可以控制最初的http請求,但是更細一點的類和方法控制不了。

interceptor:可以控制請求的控制器和方法,但控制不了請求方法裡的引數。 

aspect : 可以自定義切入的點,有方法的引數,但是拿不到http請求,可以通過其他方式如RequestContextHolder獲得。

最後:

從網上找的圖片: