spring cloud gateway 自定义全局过滤器
***************************
相关接口
GlobalFilter:全局过滤接口
public interface GlobalFilter {
Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain);
}
Ordered:过滤接口调用顺序,数值小的在前面调用
public interface Ordered {
int HIGHEST_PRECEDENCE = -2147483648;
int LOWEST_PRECEDENCE = 2147483647;
int getOrder();
}
***************************
示例
********************
配置文件
application.yml
spring:
cloud:
gateway:
routes:
- id: myRoute
uri: http://www.baidu.com
predicates:
- Path=/hello
filters:
- StripPrefix=1
********************
过滤器
过滤器1
@Component
public class CustomFilter implements GlobalFilter, Ordered {
@Override
public int getOrder() {
return 0;
}
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
System.out.println("hello world");
return chain.filter(exchange);
}
}
过滤器2
@Component
public class CustomFilter2 implements GlobalFilter, Ordered {
@Override
public int getOrder() {
return 1;
}
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
System.out.println("hello world2");
return chain.filter(exchange);
}
}
**********************
测试输出
http//localhost:8080/hello
hello world
hello world2