Add programmatic RouteLocator example

This commit is contained in:
Spencer Gibb
2017-03-17 22:39:17 -06:00
parent 317d011553
commit 17b8316bdb

View File

@@ -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<GlobalFilter> 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);
}