目录

Spring-cloud-Gateway中的GlobalFilter接口及其方法

Spring cloud Gateway中的GlobalFilter接口及其方法

GlobalFilter全局拦截器方法:

Mono filter(ServerWebExchange exchange, GatewayFilterChain chain); ServerWebExchange exchange 包含请求/响应的上下文对象,可获取请求头、参数、响应体等信息。 GatewayFilterChain chain 过滤器链对象,调用chain.filter(exchange)继续执行后续过滤器或路由使用:

  • 自定义过滤类implements GlobalFilter并且自定义类使用注解@Component。
  • 在自定义过滤类中直接使用并在方法上加注解@Bean。

常见问题:

Q1 : 多个GlobalFilter的执行顺序如何保证? A1 :通过@Order注解或实现Ordered接口指定优先级(数值越小优先级越高) 。 例: @Bean @Order(1) public GlobalFilter securityCheck(){ } @Bean public GlobalFilter requestTimeLogger(){ }

执行流程:

1、优先调用securityCheck,因为优先级更高 2、调用requestTimeLogger

注意:

  • 实际开发中需实现此接口并注册为Spring Bean。
  • 链式调用:必须调用chain.filter(exchange)才能将请求传递给后续过滤器或路由,否则请求会被终止。