【Spring Cloud Gateway專題】一、介紹以及開發環境搭建

1、前言

本文介紹的spring cloud gateway 版本爲 2.2.1.RELEASE
本文依賴的開發工具:Maven ( >= 3.3.3 )、JDK、IntelliJ IDE。
文章學習參考:芋道源碼Spring Cloud Gateway系列

2、基本介紹

以下是官方文檔對spring cloud gateway的介紹:

This project provides an API Gateway built on top of the Spring Ecosystem, including: Spring 5, Spring Boot 2 and Project Reactor. Spring Cloud Gateway aims to provide a simple, yet effective way to route to APIs and provide cross cutting concerns to them such as: security, monitoring/metrics, and resiliency.
該項目提供了一個API網關,構建在Spring生態系統之上,包括:spring 5、spring boot 2、project reactor。Spring Cloud Gateway 旨在提供一種簡單而有效的方式,以路由到 API,併爲他們提供橫切關注點的處理,例如:安全性、監控/指標和彈性。

3、開發環境搭建

3.1基礎配置

(1)添加依賴

    <properties>
        <spring.boot.version>2.2.4.RELEASE</spring.boot.version>
        <spring.cloud.version>Hoxton.SR1</spring.cloud.version>
    </properties>
     <!--
        引入 Spring Boot、Spring Cloud、Spring Cloud Alibaba 三者 BOM 文件,進行依賴版本的管理,防止不兼容。
        在 https://dwz.cn/mcLIfNKt 文章中,Spring Cloud Alibaba 開發團隊推薦了三者的依賴關係
     -->
  <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- 引入 Spring Cloud Gateway 相關依賴,使用它作爲網關,並實現對其的自動配置 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
    </dependencies>  

(2)增加配置

spring:
  application:
    name: gateway-application

  cloud:
    # Spring Cloud Gateway 配置項,對應 GatewayProperties 類
    gateway:
      # 路由配置項,對應 RouteDefinition 數組
      routes:
        - id: csdn # 路由的編號
          uri: https://blog.csdn.net # 路由到的目標地址,只能到域名部分 ,當配置超過域名部分,則會截取域名部分,如https://blog.csdn.net/dear_little_bear,會截取爲https://blog.csdn.net
          predicates: # 斷言,作爲路由的匹配條件,對應 RouteDefinition 數組
            - Path=/blog
          filters:
            - StripPrefix=1
        - id: oschina # 路由的編號
          uri: https://www.oschina.net # 路由的目標地址
          predicates: # 斷言,作爲路由的匹配條件,對應 RouteDefinition 數組
            - Path=/oschina
          filters: # 過濾器,對請求進行攔截,實現自定義的功能,對應 FilterDefinition 數組
            - StripPrefix=1
        - id: avatar # 路由的編號
          uri: http://localhost:9000 # 路由的目標地址
          predicates: # 斷言,作爲路由的匹配條件,對應 RouteDefinition 數組
            - Path=/test/img/**
          filters: # 過濾器,對請求進行攔截,實現自定義的功能,對應 FilterDefinition 數組
            - StripPrefix=1
# 記錄網關日誌
logging:
  level:
    org.springframework.cloud.gateway: TRACE
    org.springframework.http.server.reactive: DEBUG
    org.springframework.web.reactive: DEBUG
    reactor.ipc.netty: DEBUG
    reactor.netty: DEBUG

3.2運行示例

在這裏插入圖片描述

3.3源碼

本章源碼地址:SpringBoot-Labs,labx-08-sc-gateway-demo01章節。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章