diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/FilteringWebHandler.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/FilteringWebHandler.java index 1e3ac57c..395ee027 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/FilteringWebHandler.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/handler/FilteringWebHandler.java @@ -33,6 +33,8 @@ import org.springframework.cloud.gateway.route.Route; import org.springframework.core.DecoratingProxy; import org.springframework.core.Ordered; import org.springframework.core.annotation.AnnotationAwareOrderComparator; +import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.core.annotation.Order; import org.springframework.web.server.ServerWebExchange; import org.springframework.web.server.WebHandler; @@ -64,6 +66,12 @@ public class FilteringWebHandler implements WebHandler { int order = ((Ordered) filter).getOrder(); return new OrderedGatewayFilter(gatewayFilter, order); } + else { + Order order = AnnotationUtils.findAnnotation(filter.getClass(), Order.class); + if (order != null) { + return new OrderedGatewayFilter(gatewayFilter, order.value()); + } + } return gatewayFilter; }).collect(Collectors.toList()); }