diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactory.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactory.java index 203fb8dc..d64298e9 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactory.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactory.java @@ -158,10 +158,10 @@ public class RetryGatewayFilterFactory extends AbstractGatewayFilterFactory(this.gatewayProperties.getDefaultFilters()))); + filters.addAll(loadGatewayFilters(routeDefinition.getId(), + new ArrayList<>(this.gatewayProperties.getDefaultFilters()))); } if (!routeDefinition.getFilters().isEmpty()) { diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocatorTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocatorTests.java index 1720ef20..7e773928 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocatorTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocatorTests.java @@ -111,10 +111,8 @@ public class RouteDefinitionRouteLocatorTests { @Test public void contextLoadsAndApplyRouteIdToRetryFilter() { - List predicates = Arrays - .asList(new HostRoutePredicateFactory()); - List gatewayFilterFactories = Arrays.asList( - new RetryGatewayFilterFactory(), + List predicates = Arrays.asList(new HostRoutePredicateFactory()); + List gatewayFilterFactories = Arrays.asList(new RetryGatewayFilterFactory(), new AddResponseHeaderGatewayFilterFactory()); GatewayProperties gatewayProperties = new GatewayProperties(); gatewayProperties.setDefaultFilters(Arrays.asList(new FilterDefinition("Retry"))); @@ -122,10 +120,8 @@ public class RouteDefinitionRouteLocatorTests { { setId("foo"); setUri(URI.create("https://foo.example.com")); - setPredicates( - Arrays.asList(new PredicateDefinition("Host=*.example.com"))); - setFilters(Arrays.asList( - new FilterDefinition("AddResponseHeader=X-Response-Foo, Bar"))); + setPredicates(Arrays.asList(new PredicateDefinition("Host=*.example.com"))); + setFilters(Arrays.asList(new FilterDefinition("AddResponseHeader=X-Response-Foo, Bar"))); } })); @@ -133,9 +129,8 @@ public class RouteDefinitionRouteLocatorTests { gatewayProperties); @SuppressWarnings("deprecation") RouteDefinitionRouteLocator routeDefinitionRouteLocator = new RouteDefinitionRouteLocator( - new CompositeRouteDefinitionLocator(Flux.just(routeDefinitionLocator)), - predicates, gatewayFilterFactories, gatewayProperties, - new ConfigurationService()); + new CompositeRouteDefinitionLocator(Flux.just(routeDefinitionLocator)), predicates, + gatewayFilterFactories, gatewayProperties, new ConfigurationService(null, () -> null, () -> null)); StepVerifier.create(routeDefinitionRouteLocator.getRoutes()).assertNext(route -> { List filters = route.getFilters();