1、什么是Spring Cloud Gateway
Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Netflix ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。

2、Spring Cloud Gateway入门案例
2.1 创建maven工程,pom.xml文件

复制代码


    4.0.0
    com.lynch
    spring-cloud-gateway
    0.0.1-SNAPSHOT
    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.3.RELEASE
         
    

    
        UTF-8
        UTF-8
        1.8
        Finchley.RELEASE
    

    
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.cloud
            spring-cloud-starter-gateway
        
    

    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

复制代码

 

2.2 Spring Cloud Gateway主程序

复制代码

package com.lynch;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.gateway.route.RouteLocator;import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;import org.springframework.context.annotation.Bean;/**
 * Spring Cloud Gateway主程序
 *
 * @author Lynch */@SpringBootApplicationpublic class Application {
    @Bean    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {        return builder.routes()                // basic proxy
                .route(r -> r.path("/baidu")
                .uri("http://baidu.com:80/"))
                .build();
    }    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

复制代码

 

2.3 编写application.yml文件

复制代码

server:
  port: 8080spring:
  application:
    name: spring-cloud-gateway
  cloud:
    gateway:
      routes:      - id: xujin_route
        uri: http://www.xujin.org:80/        predicates:        - Path=/xujin
 
logging:
  level:
    org.springframework.cloud.gateway: TRACE
    org.springframework.http.server.reactive: DEBUG
    org.springframework.web.reactive: DEBUG
    reactor.ipc.netty: DEBUG

复制代码

 

2.4 基本代理路由配置等同写法
Spring Cloud Gateway提供了两种配置路由规则的方法

第一:通过@Bean自定义RouteLocator

复制代码

    @Bean    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {        return builder.routes()                // basic proxy
                .route(r -> r.path("/baidu")
                .uri("http://baidu.com:80/"))
                .build();
    }

复制代码

 

第二:通过属于文件或者yml文件配置

复制代码

spring:
  cloud:
    gateway:
      routes:      - id: xujin_route
        uri: http://www.xujin.org:80/        predicates:        - Path=/xujin

复制代码

 

2.5 运行测试
访问http://localhost:8080/baidu,路由转发到http://www.baidu.com
访问http://localhost:8080/xujin,路由转发到http://xujin.orgyml