【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章节。

发布了28 篇原创文章 · 获赞 28 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/xujinggen/article/details/105256721
今日推荐