最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入解析Spring Cloud內(nèi)置的Zuul過濾器

 更新時(shí)間:2017年02月25日 10:34:50   作者:周立  
這篇文章主要給大家深入的介紹了Spring Cloud內(nèi)置的Zuul過濾器的相關(guān)資料,文中給大家介紹的很詳細(xì),相信對大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。

前言

Spring Cloud默認(rèn)為Zuul編寫并啟用了一些過濾器,這些過濾器有什么作用呢?我們不妨按照@EnableZuulServer、@EnableZuulProxy兩個(gè)注解進(jìn)行展開,相信大家對這兩個(gè)注解都不陌生(至少都見過吧)。如果覺得陌生也沒有關(guān)系,可將@EnableZuulProxy簡單理解為@EnableZuulServer的增強(qiáng)版。事實(shí)上,當(dāng)Zuul與Eureka、Ribbon等組件配合使用時(shí),

@EnableZuulProxy是我們常用的注解。

在Spring Cloud的官方文檔中,只說@EnableZuulServer是一個(gè)“空白”的Zuul,那么究竟空白在什么地方呢?與@EnableZuulProxy到底有什么區(qū)別呢?諸多問題,都將在本文找到答案。

在此之前,我們先理解什么是RequestContext:

RequestContext:用于在過濾器之間傳遞消息。它的數(shù)據(jù)保存在每個(gè)請求的ThreadLocal中。它用于存儲請求路由到哪里、錯(cuò)誤、HttpServletRequest、HttpServletResponse都存儲在RequestContext中。RequestContext擴(kuò)展了ConcurrentHashMap,所以,任何數(shù)據(jù)都可以存儲在上下文中。

@EnableZuulServer過濾器

一、pre類型過濾器

(1) ServletDetectionFilter:該過濾器用于檢查請求是否通過Spring Dispatcher。檢查后,通過isDispatcherServletRequest設(shè)置布爾值。

(2) FormBodyWrapperFilter:解析表單數(shù)據(jù),并為請求重新編碼。

(3) DebugFilter:顧名思義,調(diào)試用的過濾器,可以通過zuul.debug.request=true ,或在請求時(shí),加上debug=true的參數(shù),例如$ZUUL_HOST:ZUUL_PORT/path?debug=true 開啟該過濾器。這樣,該過濾器就會把RequestContext.setDebugRouting() 、RequestContext.setDebugRequest() 設(shè)為true。

二、route類型過濾器

SendForwardFilter:該過濾器使用Servlet RequestDispatcher轉(zhuǎn)發(fā)請求,轉(zhuǎn)發(fā)位置存儲在RequestContext.getCurrentContext().get("forward.to") 中??梢詫⒙酚稍O(shè)置成:

zuul:
 routes:
 abc: 
  path: /abc/**
  url: forward:/abc

然后訪問$ZUUL_HOST:ZUUL_PORT/abc ,觀察該過濾器的執(zhí)行過程。

三、post類型過濾器

SendResponseFilter:將Zuul所代理的微服務(wù)的的響應(yīng)寫入當(dāng)前響應(yīng)。

四、error類型過濾器

SendErrorFilter:如果RequestContext.getThrowable() 不為null,那么默認(rèn)就會轉(zhuǎn)發(fā)到/error,也可以設(shè)置error.path屬性修改默認(rèn)的轉(zhuǎn)發(fā)路徑。

@EnableZuulProxy過濾器

如果使用注解@EnableZuulProxy,那么除上述過濾器之外,Spring Cloud還會安裝以下過濾器:

一、pre類型過濾器

PreDecorationFilter:該過濾器根據(jù)提供的RouteLocator確定路由到的地址,以及怎樣去路由。該路由器也可為后端請求設(shè)置各種代理相關(guān)的header。

二、route類型過濾器

(1) RibbonRoutingFilter:該過濾器使用Ribbon,Hystrix和可插拔的HTTP客戶端發(fā)送請求。serviceId在RequestContext.getCurrentContext().get("serviceId") 中。該過濾器可使用不同的HTTP客戶端,例如

  1. Apache HttpClient:默認(rèn)的HTTP客戶端
  2. Squareup OkHttpClient v3:如需使用該客戶端,需保證com.squareup.okhttp3的依賴在classpath中,并設(shè)置ribbon.okhttp.enabled = true 。
  3. Netflix Ribbon HTTP client:設(shè)置ribbon.restclient.enabled = true 即可啟用該HTTP客戶端。需要注意的是,該客戶端有一定限制,例如不支持PATCH方法,另外,它有內(nèi)置的重試機(jī)制。

(2) SimpleHostRoutingFilter:該過濾器通過Apache HttpClient向指定的URL發(fā)送請求。URL在RequestContext.getRouteHost() 中。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Spring Boot報(bào)錯(cuò):No session repository could be auto-configured, check your configuration的解決方法

    Spring Boot報(bào)錯(cuò):No session repository could be auto-configured

    這篇文章主要給大家介紹了關(guān)于Spring Boot報(bào)錯(cuò):No session repository could be auto-configured, check your configuration的解決方法,文中給出了詳細(xì)的解決方法,對遇到這個(gè)問題的朋友們具有一定參考價(jià)值,需要的朋友下面來一起看看吧。
    2017-07-07
  • springcloud?gateway實(shí)現(xiàn)簡易版灰度路由步驟詳解

    springcloud?gateway實(shí)現(xiàn)簡易版灰度路由步驟詳解

    這篇文章主要為大家介紹了springcloud?gateway實(shí)現(xiàn)簡易版灰度路由步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • springboot相互依賴 server相互引用方式

    springboot相互依賴 server相互引用方式

    這篇文章主要介紹了springboot相互依賴 server相互引用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • idea如何配置springboot熱部署

    idea如何配置springboot熱部署

    這篇文章主要介紹了idea如何配置springboot熱部署問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • spring data JPA 中的多屬性排序方式

    spring data JPA 中的多屬性排序方式

    這篇文章主要介紹了spring data JPA 中的多屬性排序方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • SSM框架+Plupload實(shí)現(xiàn)分塊上傳大文件示例

    SSM框架+Plupload實(shí)現(xiàn)分塊上傳大文件示例

    這篇文章主要介紹了SSM框架+Plupload實(shí)現(xiàn)分塊上傳示例(Spring+SpringMVC+MyBatis+Plupload),將用戶選中的文件(可多個(gè))分隔成一個(gè)個(gè)小塊,依次向服務(wù)器上傳,有興趣的可以了解一下。
    2017-03-03
  • Java JDK11的下載與安裝教程

    Java JDK11的下載與安裝教程

    這篇文章主要介紹了Java JDK11的下載與安裝,本文以win10為例給大家講解win10系統(tǒng)下載安裝jdk11的教程,需要的朋友可以參考下
    2023-05-05
  • 解決idea 項(xiàng)目編譯后沒有class文件的問題

    解決idea 項(xiàng)目編譯后沒有class文件的問題

    這篇文章主要介紹了解決idea 項(xiàng)目編譯后沒有class文件的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 詳解Spring極速集成注解redis實(shí)錄

    詳解Spring極速集成注解redis實(shí)錄

    這篇文章主要介紹了詳解Spring極速集成注解redis實(shí)錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 解決引入Redisson可能會出現(xiàn)項(xiàng)目啟動失敗的問題

    解決引入Redisson可能會出現(xiàn)項(xiàng)目啟動失敗的問題

    這篇文章主要介紹了解決引入Redisson可能會出現(xiàn)項(xiàng)目啟動失敗的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評論

阿坝| 海晏县| 弥勒县| 正阳县| 乐安县| 延津县| 晋宁县| 宜君县| 交口县| 静宁县| 商河县| 辰溪县| 盐源县| 上蔡县| 柘城县| 师宗县| 奉新县| 北安市| 新巴尔虎右旗| 奉化市| 永康市| 河北区| 景东| 通化县| 贵港市| 辉南县| 上犹县| 望都县| 息烽县| 农安县| 东城区| 林西县| 巩义市| 广宁县| 红桥区| 长岭县| 江山市| 乐清市| 东宁县| 清流县| 鄂伦春自治旗|