SpringCloudGateway 学习笔记 - 搭建项目
Posted 笑虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloudGateway 学习笔记 - 搭建项目相关的知识,希望对你有一定的参考价值。
SpringCloudGateway 学习笔记 - 搭建项目
创建项目
先用一个干净的 SpringBoot
项目。
什么都不用选,一直下一步到结束。
pom.xml 依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--如果需要继承可以添加 parent 结点-->
<!-- <parent>-->
<!-- <groupId>com.jerry</groupId>-->
<!-- <artifactId>gateway-demo-parent</artifactId>-->
<!-- <version>0.0.1</version>-->
<!-- </parent>-->
<groupId>com.jerry</groupId>
<artifactId>gateway-demo</artifactId>
<version>0.0.1</version>
<name>$project.artifactId</name>
<description>springGateway学习</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.7.2</spring-boot.version>
<nacos.version>2021.0.1.0</nacos.version>
<spring-gateway.version>3.1.3</spring-gateway.version>
</properties>
<dependencies>
<!-- SpringCloud Alibaba Nacos 服务注册发现,配置管理 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>$nacos.version</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>$nacos.version</version>
</dependency>
<!--启动时加载 bootstrap 配置-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.4</version>
</dependency>
<!-- SpringCloud Gateway -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<version>$spring-gateway.version</version>
</dependency>
</dependencies>
<dependencyManagement>
<!-- 导入 SpringBoot 依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>$spring-boot.version</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<!-- 配置打包名称 -->
<finalName>$project.artifactId</finalName>
<plugins>
<!-- spring-boot 打包插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>$spring-boot.version</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Nacos 不是必需的,单跑网关也可以。
将配置文件直接丢在 jar 同文件夹,jar 启动时也会优先于其内部的 application 加载。
但使用 Nacos 的好处在于,修改配置后,会直接生效,无需重启 gateway。
bootstrap.yml
bootstrap.yml
优先级高于 application.yml
启动相关的配置放这里。
# 网关端口
server:
port: 9527
# Spring
spring:
application:
name: gateway-demo
profiles:
# 环境配置
active: test
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
# 配置文件格式
file-extension: yml
看启动成功后会监听一下配置文件。
我在 Nacos 上创建 的DataID就是gateway-demo-test.yml
listening config: dataId=gateway-demo.yml, group=DEFAULT_GROUP
listening config: dataId=gateway-demo-test.yml, group=DEFAULT_GROUP
listening config: dataId=gateway-demo, group=DEFAULT_GROUP
application.yml
业务相关的配置放这里。
如果只是简单的统一API出口,那我们基本只要编辑这个配置文件就能实现了,一行代码都不用写。
spring:
cloud:
gateway:
# 路由规则
routes:
# 路由的唯一标识,取名时尽量表明此条路由规则的用途。
- id: all
# order 值越小优先级越高
order: 2
# 所有路径转发到百度
predicates:
- Path=/**
# 转发到:
uri: http://www.baidu.com
# 此路由用于匹配 /aaa 等几个路径并转发到 csdn
- id: aaa
order: 1
# 匹配以下路径
predicates:
- name: Path
args:
# 匹配路径
- /aaa
- /aaa/xxx
- /aaa123/xxx
- /jx520
# 转发到:
uri: https://blog.csdn.net
# 此路由用于匹配 /bbb 等几个路径并转发到 bilibili
- id: bbb
order: 1
# 匹配以下路径
predicates:
- name: Path
args:
# 匹配路径
- /bbb
- /bbb/yyy
- /bbb456/yyy
# 转发到:
uri: https://www.bilibili.com
routes 参数
属性 | 说明 |
---|---|
order | 值越小优先级越高。可以为负。 |
参考资料
Spring Cloud Gateway
笑虾:SpringCloudGateway 学习笔记 - yml 配置
笑虾:SpringCloudGateway 学习笔记 - 自定义过滤器 之 获取响应头
以上是关于SpringCloudGateway 学习笔记 - 搭建项目的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloudGateway 学习笔记 - 搭建项目
SpringCloudGateway 学习笔记 - 自定义过滤器 之 获取响应头
SpringCloudGateway 学习笔记 - yml 配置
SpringCloudGateway 学习笔记 - 使用内置过滤器添加请求头响应头