先上一张图,如下图1所示
图1 FilterSecurityInterceptor的beforeInvocation方法调用图
从图1中可以看出,使用了Template pattern。
FilterSecurityInterceptor中的securityMetadataSource是FilterInvocationSecurityMetadataSource,这是个interface类型,如下图2,
图2 FilterInvocationSecurityMetadataSource
如果是MethodSecurityInterceptor,那么它的securityMetadataSource是MethodSecurityMetadataSource,它的类图如下图3:
图3 MethodSecurityMetadataSource的类图
FilterSecurityInterceptor的doFilter方法时序图如下图4:
图4 FilterSecurityFilter的doFilter时序图
如图4所示,invoke方法中,先调用父类的beforeInvocation方法,之后调用filterChain的doFilter方法,之后调用父类的finallyInvocation和afterInvocation
(adsbygoogle = window.adsbygoogle || []).push({});