我正在使用spring cloud gateway filter,希望通过GatewayFilterFactory过滤请求,但订单不使用@Order注释
我尝试交换过滤器的顺序,但不起作用。
@Slf4j
@Order(1)
@Component
public class AccessFilter implements GatewayFilterFactory<AccessFilter.Config> {
@Override
public GatewayFilter apply(AccessFilter.Config config) {
return (exchange, chain) -> {
log.info("in AccessFilter second");
// do something
}
}
}@Order(-1)
@Slf4j
@Component
public class AddTraceIdGlobalFilter implements GlobalFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
log.info("in globalfilter first");
// do something
}
}我的yaml文件:
spring:
cloud:
gateway:
routes:
- id: user_1
uri: http://user:8080
predicates:
- Path=/v1/user/info
filters:
- AccessFilter我希望得到以下输出:
in globalfilter first
in AccessFilter second但是实际的输出是:
in AccessFilter second
in globalfilter first发布于 2019-08-07 23:43:53
不能将GatewayFilterFactory应用于@Order或Ordered。您必须使用OrderedGatewayFilter。
@Component
public class AccessFilter implements GatewayFilterFactory<AccessFilter.Config> {
@Override
public GatewayFilter apply(AccessFilter.Config config) {
return new OrderedGatewayFilter((exchange, chain) -> {
log.info("in AccessFilter second");
// do something
}, 1)
}
}https://stackoverflow.com/questions/56232542
复制相似问题