文章目录
- GlobalFilter接口
- GatewayFilter接口
- WebFilter
- WebFilter接口
- @WebFilter注
- 区别
- 参考
如果说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