先上一張圖,以下圖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