請求進入網(wǎng)關會碰到三類過濾器:當前路由過濾器、DefaultFilter、GlobalFilter。
請求路由后,會將當前路由過濾器和DefaultFilter、GlobalFilter,合并到一個過濾器鏈(集合)中,排序后依次執(zhí)行每個過濾器
過濾器執(zhí)行順序
1.每一個過濾器都必須指定一個int類型的order值,order值越小,優(yōu)先級越高,執(zhí)行順序越靠前。
2.GlobalFilter通過實現(xiàn)Ordered接口,或者添加@Order注解來指定order值,由我們自己指定
3.路由過濾器和defaultFilter的order由Spring指定,默認是按照聲明順序從1遞增。
default-filters:
- AddRequestHeader=Truth,lisi is freaking awesome! #ordered 1
- AddXxxxHeader=Truth,lisi is freaking awesome! #ordered 2
4.當過濾器的order值一樣時,會按照 defaultFilter > 路由過濾器 > GlobalFilter的順序執(zhí)行。
可以參考下面幾個類的源碼來查看:
org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator#getFilters()方法是先加載defaultFilters,然后再加載某個route的filters,然后合并。
org.springframework.cloud.gateway.handler.FilteringWebHandler#handle()方法會加載全局過濾器,與前面的過濾器合并后根據(jù)order排序,組織過濾器鏈文章來源:http://www.zghlxwxcb.cn/news/detail-536250.html
總結(jié)
路由過濾器、defaultFilter、全局過濾器的執(zhí)行順序?
1.order值越小,優(yōu)先級越高
2.當order值一樣時,順序是defaultFilter最先,然后是局部的路由過濾器,最后是全局過濾器文章來源地址http://www.zghlxwxcb.cn/news/detail-536250.html
到了這里,關于gateway-過濾器執(zhí)行順序的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!