Gateway网关-过滤器链执行顺序
過濾器執(zhí)行順序
?
請求進入網(wǎng)關會碰到三類過濾器:當前路由的過濾器、DefaultFilter、GlobalFilter
請求路由后,會將當前路由過濾器和DefaultFilter、GlobalFilter,合并到一個過濾器鏈(集合)中,排序后依次執(zhí)行每個過濾器:
排序的規(guī)則是什么呢?
-
每一個過濾器都必須指定一個int類型的order值,order值越小,優(yōu)先級越高,執(zhí)行順序越靠前。
-
GlobalFilter通過實現(xiàn)Ordered接口,或者添加@Order注解來指定order值,由我們自己指定
-
路由過濾器和defaultFilter的order由Spring指定,默認是按照聲明順序從1遞增。
-
當過濾器的order值一樣時,會按照 defaultFilter > 路由過濾器 > GlobalFilter的順序執(zhí)行。
詳細內容,可以查看源碼:
org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator#getFilters()方法是先加載defaultFilters,然后再加載某個route的filters,然后合并。
org.springframework.cloud.gateway.handler.FilteringWebHandler#handle()方法會加載全局過濾器,與前面的過濾器合并后根據(jù)order排序,組織過濾器鏈
總結
以上是生活随笔為你收集整理的Gateway网关-过滤器链执行顺序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Gateway网关-全局过滤器
- 下一篇: 使用Docker-镜像命令