diff --git a/spring-cloud-gateway-sample/src/main/java/org/springframework/cloud/gateway/sample/GatewaySampleApplication.java b/spring-cloud-gateway-sample/src/main/java/org/springframework/cloud/gateway/sample/GatewaySampleApplication.java index 42b351e4..60474302 100644 --- a/spring-cloud-gateway-sample/src/main/java/org/springframework/cloud/gateway/sample/GatewaySampleApplication.java +++ b/spring-cloud-gateway-sample/src/main/java/org/springframework/cloud/gateway/sample/GatewaySampleApplication.java @@ -17,18 +17,22 @@ package org.springframework.cloud.gateway.sample; +import java.util.List; + import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.cloud.gateway.EnableGateway; -import org.springframework.cloud.gateway.api.RouteDefinitionLocator; -import org.springframework.cloud.gateway.config.GatewayProperties; -import org.springframework.cloud.gateway.config.PropertiesRouteDefinitionLocator; -import org.springframework.cloud.gateway.support.CachingRouteDefinitionLocator; -import org.springframework.cloud.gateway.support.CompositeRouteDefinitionLocator; -import org.springframework.cloud.gateway.support.InMemoryRouteDefinitionRepository; +import org.springframework.cloud.gateway.route.RouteLocator; +import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.cloud.gateway.filter.factory.AddResponseHeaderWebFilterFactory; +import org.springframework.cloud.gateway.route.Route; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Primary; +import org.springframework.tuple.TupleBuilder; +import org.springframework.web.reactive.function.server.RequestPredicates; + +import static org.springframework.cloud.gateway.support.RouteDefinitionRouteLocator.loadFilters; + import reactor.core.publisher.Flux; /** @@ -39,6 +43,21 @@ import reactor.core.publisher.Flux; @EnableGateway public class GatewaySampleApplication { + @Bean + public RouteLocator customRouteLocator(List globalFilters) { + return () -> { + Route route = Route.builder() + .id("test") + .uri("http://httpbin.org:80") + .requestPredicate(RequestPredicates.path("/image/png")) + .addAll(loadFilters(globalFilters)) + .add(new AddResponseHeaderWebFilterFactory() + .apply(TupleBuilder.tuple().of("name", "X-TestHeader", "value", "foobar"))) + .build(); + return Flux.just(route); + }; + } + public static void main(String[] args) { SpringApplication.run(GatewaySampleApplication.class, args); }