Spring DelegatingFilterProxy

Spring 에 서 는 Once PerRequestFilter 와 같은 많은 Filter 를 정의 합 니 다.
OncePerRequestFilter 를 사용자 정의 하면 웹. xml 에 차단 이나 로그 작업 을 설정 할 수 있 습 니 다.
문 제 는 어떻게 spring filter bean 을 웹. xml 에 주입 합 니까?
Spring Security 에 이런 예 가 있 는 것 으로 밝 혀 졌 다.나 는 소스 코드 를 읽 었 다.아래 와 같이 발견 되 었 습 니 다.
<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/spring-security.xml
        </param-value>
    </context-param>

    <!-- Spring Security -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

그 중에서 도 Delegating FilterProxy 라 는 종 류 를 발견 했다.그리고 이 class 의 source 를 읽 었 습 니 다.
선택 은 다음 과 같 습 니 다.
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
            throws ServletException, IOException {

        // Lazily initialize the delegate if necessary.
        Filter delegateToUse = this.delegate;
        if (delegateToUse == null) {
            synchronized (this.delegateMonitor) {
                if (this.delegate == null) {
//      applicationContext                    
WebApplicationContext wac = findWebApplicationContext();
                    if (wac == null) {
                        throw new IllegalStateException("No WebApplicationContext found: no ContextLoaderListener registered?");
                    }
//         
                    this.delegate = initDelegate(wac);
                }
                delegateToUse = this.delegate;
            }
        }

        // Let the delegate perform the actual doFilter operation.
        invokeDelegate(delegateToUse, request, response, filterChain);
    }

그래서 또렷 해 졌 다.
기본 적 인 설정 은 웹. xml 에서 listener 를 설정 하여 spring application context 를 초기 화 하 는 것 입 니 다.
그리고 Delegating FilterProxy, 포장 에이전트 FilterBean 을 설정 합 니 다.

좋은 웹페이지 즐겨찾기