Add programmatic RouteLocator example
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user