先上一张图,以下图1所示3d
图1 FilterSecurityInterceptor的beforeInvocation方法调用图blog
从图1中能够看出,使用了Template pattern。it
FilterSecurityInterceptor中的securityMetadataSource是FilterInvocationSecurityMetadataSource,这是个interface类型,以下图2,io
图2 FilterInvocationSecurityMetadataSource方法
若是是MethodSecurityInterceptor,那么它的securityMetadataSource是MethodSecurityMetadataSource,它的类图以下图3:im
图3 MethodSecurityMetadataSource的类图d3
FilterSecurityInterceptor的doFilter方法时序图以下图4:filter
图4 FilterSecurityFilter的doFilter时序图db
如图4所示,invoke方法中,先调用父类的beforeInvocation方法,以后调用filterChain的doFilter方法,以后调用父类的finallyInvocation和afterInvocationimg