Springsecurity之DefaultSecurityFilterChain

    在看FilterChainProxy的時候,發現使用到SecurityFilterChain,能夠看下個人這篇博客java

    注意:Springsecurity版本是4.3.x.RELEASE.net

    在看源碼的過程當中,發現SecurityFilterChain的實現類只有一個DefaultSecurityFilterChain,Spring中通常狀況下一個接口的實現都會有好多實現類,只有一個實現類的比較少見。code

    先上一張圖,以下圖1所示。blog

                             

                                                                                   圖1接口

    List-1 最重要的倆個方法get

public List<Filter> getFilters() {
		return filters;
	}

	public boolean matches(HttpServletRequest request) {
		return requestMatcher.matches(request);
	}

    如List-1所示,最重要的倆個方法就是matches和getFilters。感受DefaultSecurityFilterChain就是對RequestMatcher和Filter的封裝而已。那麼在FilterChainProxy中爲何不直接使用RequestMatcher和Filter呢,還用SecurityFilterChain做爲中轉呢?我的的理解與思考以下:源碼

  •  若是直接在FilterChainProxy中使用RequestMatcher和Filter,那麼代碼耦合度就會變高,SecurityFilterChain最爲解耦的一個承載。
  •  這也啓示我,之後遇到代碼耦合度高的狀況下,能夠借鑑SecurityFilterChain這樣,用一箇中轉類來解耦。
相關文章
相關標籤/搜索