如果说GlobalFilter是全局级别的Filter,GatewayFilter是路由级别的Filter,那么WebFilter是URL级别的Filter。

GlobalFilter接口

  • 全局过滤器 实现 GlobalFilter 和 Ordered,重写相关方法,加入到spring容器管理即可,不需要配置路由,系统初始化作用到所有路由上。
  • GlobalFilter也会通过 GatewayFilterAdapter 转换成GatewayFilter,并作用于每个路由上,在FilteringWebHandler类中的loadFilters()方法实现。

GatewayFilter接口

  • 局部过滤器 实现GatewayFilter, Ordered,实现相关的方法,并配置某个路由,才能过滤,如果不配置则不启用此过滤器规则。
  • 需要通过spring.cloud.routes.filters 配置在具体路由下,只作用在当前路由上或通过spring.cloud.default-filters配置在全局,作用在所有路由上。需要配置某个路由,才能过滤。

WebFilter

WebFilter接口

  • Spring之WebFilter接口:WebFilter 是一个接口,里面只定义了一个方法。所以,要使用 WebFilter只需要实现这一个方法即可。
	Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain);

@WebFilter注

  • Servlet之WebFilter注解,用于声明 servlet 过滤器的注释。此注释由容器在部署时处理,并将相应的过滤器应用于指定的 URL 模式、servlet 和调度程序类型。
@WebFilter(urlPatterns = "/lurl/api/*", filterName = "filteName")

区别

  • WebFIlter、GlobalFIlter、GatewayFilter总结

    • WebFIlter是属于SpringBoot体现的,适用于Spring Web请求。GlobalFilter和GatewayFIlter属于SpringCloud体系的,适用于Spring Gateway中使用。
  • 持续补充中…

参考

  • https://blog.csdn.net/kimichen123/article/details/121028212
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐