国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

DelegatingFilterProxy分析

vboy1010 / 2063人閱讀

前言

最近在分析源碼時發(fā)現(xiàn)了一個配置如下:

#web.xml文件中

    cacheSessionFilter
    org.springframework.web.filter.DelegatingFilterProxy
    
        targetFilterLifecycle
        true
    


    
    /*


#applicationContext.xml文件

那么這個DelegatingFilterProxy到底是干嘛用的那???網(wǎng)上查了很多,最終總結(jié)為一句話即:DelegateFilterProxy實(shí)現(xiàn)了服務(wù)器容器(tomcate was等)中的filter調(diào)用spring容器中類的功能,那這是如何實(shí)現(xiàn)的那?

DelegatingFilterProxy和spring容器如何關(guān)聯(lián)的?

觀察web.xml文件,spring的初始化一般都是在非常靠前的,也就是說在使用delegatingfilterproxy之前,spring容器已經(jīng)初始化完成了,然后觀察delegatingfilterproxy的源碼會發(fā)現(xiàn)有這么一段

protected void initFilterBean() throws ServletException {
        synchronized (this.delegateMonitor) {
            if (this.delegate == null) {
                // If no target bean name specified, use filter name.
                if (this.targetBeanName == null) {
                    this.targetBeanName = getFilterName();
                }
                // Fetch Spring root application context and initialize the delegate early,
                // if possible. If the root application context will be started after this
                // filter proxy, we"ll have to resort to lazy initialization.
                WebApplicationContext wac = findWebApplicationContext();
                if (wac != null) {
                    this.delegate = initDelegate(wac);
                }
            }
        }
    }

沒錯WebApplicationContext其實(shí)就是spring容器,也就是說DelegatingFilterProxy中保存有spring的容器,而在WebApplicationContext中有一個和DelegatingFilerProxy同名的類(這個類就是我們自己的類),DelegatingFilterProxy會從WebApplicationContext中尋找那個和其同名的類,然后將所有的動作賦予給它。

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) {
                delegateToUse = this.delegate;
                if (delegateToUse == null) {
                    WebApplicationContext wac = findWebApplicationContext();
                    if (wac == null) {
                        throw new IllegalStateException("No WebApplicationContext found: " +
                                "no ContextLoaderListener or DispatcherServlet registered?");
                    }
                    delegateToUse = initDelegate(wac);
                }
                this.delegate = delegateToUse;
            }
        }

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

其中的delegateToUse就是從webapplicationcontext中取出來的:

@Override
    protected void initFilterBean() throws ServletException {
        synchronized (this.delegateMonitor) {
            if (this.delegate == null) {
                // If no target bean name specified, use filter name.
                if (this.targetBeanName == null) {
                    this.targetBeanName = getFilterName();
                }
                // Fetch Spring root application context and initialize the delegate early,
                // if possible. If the root application context will be started after this
                // filter proxy, we"ll have to resort to lazy initialization.
                WebApplicationContext wac = findWebApplicationContext();
                if (wac != null) {
                    this.delegate = initDelegate(wac);
                }
            }
        }
    }

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/68981.html

相關(guān)文章

  • 如何使用Spring管理Filter和Servlet

    摘要:利用這種方式就將或者和業(yè)務(wù)對象的依賴關(guān)系用來進(jìn)行管理,并且不用在中硬編碼要引用的對象名字。配置的的配置完成。推薦使用,應(yīng)為配置上更簡單。 在使用spring容器的web應(yīng)用中,業(yè)務(wù)對象間的依賴關(guān)系都可以用context.xml文件來配置,并且由spring容器來負(fù)責(zé)依賴對象 的創(chuàng)建。如果要在filter或者servlet中使用spring容器管理業(yè)務(wù)對象,通常需要使用WebApplic...

    amuqiao 評論0 收藏0
  • Spring Security 初始化流程詳解

    摘要:構(gòu)建完實(shí)例后,將它設(shè)置為的父認(rèn)證管理器并將該傳入構(gòu)造器構(gòu)建實(shí)例。,目前為止已經(jīng)被初始化,接下去需要設(shè)置對象添加至的列表中打開類結(jié)構(gòu),和一樣,它也實(shí)現(xiàn)了接口,同樣繼承自。最后返回的是的默認(rèn)實(shí)現(xiàn)。 最近在整合微服務(wù)OAuth 2認(rèn)證過程中,它是基于Spring Security之上,而本人對Spring Security架構(gòu)原理并不太熟悉,導(dǎo)致很多配置搞不太清楚,遂咬牙啃完了Spring ...

    tommego 評論0 收藏0
  • spring系列---Security 安全框架使用和文件上傳FastDFS

    摘要:框架入門簡介是一個能夠?yàn)榛诘钠髽I(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架。 1.Spring Security框架入門 1.1 Spring Security簡介 Spring Security是一個能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應(yīng)用上下文中配置的Bean,充分利用了Spring IoC,DI(...

    K_B_Z 評論0 收藏0
  • sSpring Boot多模塊+ Shiro + Vue:前后端分離登陸整合,權(quán)限認(rèn)證(一)

    摘要:前言本文主要使用來實(shí)現(xiàn)前后端分離的認(rèn)證登陸和權(quán)限管理,適合和我一樣剛開始接觸前后端完全分離項(xiàng)目的同學(xué),但是你必須自己搭建過前端項(xiàng)目和后端項(xiàng)目,本文主要是介紹他們之間的互通,如果不知道這么搭建前端項(xiàng)目的同學(xué)可以先找別的看一下。 前言 本文主要使用spring boot + shiro + vue來實(shí)現(xiàn)前后端分離的認(rèn)證登陸和權(quán)限管理,適合和我一樣剛開始接觸前后端完全分離項(xiàng)目的同學(xué),但是你必...

    macg0406 評論0 收藏0
  • spring系列---CAS客戶端與SpringSecurity集成

    摘要:客戶端與集成指定端口請求路徑用于單點(diǎn)退出,該過濾器用于實(shí)現(xiàn)單點(diǎn)登出功能,可選配置該過濾器用于實(shí)現(xiàn)單點(diǎn)登出功能,可選配置。該過濾器使得開發(fā)者可以通過來獲取用戶的登錄名。 CAS客戶端與SpringSecurity集成 pom.xml org.springframework spring-context 4.3.9....

    hizengzeng 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<