1、创建springboot项目添加依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency>
2、配置application.yml
server: port: 5000 spring: application: name: hello-gateway cloud: gateway: routes: - id: gateway1 uri: https://www.jianshu.com/p/44a0d6adcdea predicates: - Path=/p/44a0d6adcdea
3、配置启动类
@SpringBootApplication public class HelloGatewayApplication { public static void main(String[] args) { SpringApplication.run(HelloGatewayApplication.class, args); } @Bean public RouteLocator routeLocator(RouteLocatorBuilder builder){ return builder.routes() .route(r->r.path("/java-concurrent").uri("http://ifeve.com")) .build(); } }
项目
访问http://localhost:5000/p/44a0d6adcdea、http://ifeve.com/java-concurrent/
总结访问http://localhost:5000/p/44a0d6adcdea则会转发到https://www.jianshu.com/p/44a0d6adcdea
访问http://ifeve.com/java-concurrent/,则会转发到http://ifeve.com/java-concurrent/
1、可以看出,地址栏中的url是不会变的,说明gateway是转发而不是重定向
2、同时可以发现gateway不会组件不像springcloud其他组建要使用@EnableXXX,如eureka要使用@EnableEurekaServer 、 Feign要使用@EnableFeignClients等等
3、这个项目可以看出gateway支持两种方式yml、和配置类