创建子工程

:::tips 在SpringCloud父工程下创建一个gateway子工程,注意指定父工程
image.png :::

引入依赖

:::tips 在gateway工程中引入gateway依赖以及Nacos注册中心的起步依赖 :::

  1. <!-- gateway依赖 -->
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-starter-gateway</artifactId>
  5. </dependency>
  6. <!-- Nacos注册中心依赖 -->
  7. <dependency>
  8. <groupId>com.alibaba.cloud</groupId>
  9. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  10. </dependency>

编写代码

创建启动类

  1. @SpringBootApplication
  2. public class GatewayApplication {
  3. public static void main(String[] args) {
  4. SpringApplication.run(GatewayApplication.class, args);
  5. }
  6. }

创建配置文件

:::tips 在gateway工程中添加配置,配置网关路由规则(通过路径匹配) :::

  1. server:
  2. #配置服务端口
  3. port: 端口号
  4. spring:
  5. application:
  6. #配置服务名称
  7. name: gateway
  8. cloud:
  9. nacos:
  10. #配置Nacos地址
  11. server-addr: localhost:8848
  12. #Gateway网关配置
  13. gateway:
  14. #网关路由配置
  15. routes:
  16. #自定义路由id,必须唯一
  17. - id: user-service
  18. #配置路由的目标地址,lb是负载均衡,后面填写服务名称
  19. uri: lb://userservice
  20. #路由断言,也就是判断请求是否符合路由的条件
  21. predicates:
  22. #按照请求路径匹配路由规则,请求路径以/user开头的请求就会被路由到配置的微服务中
  23. - Path=/user/**

在配置文件中配置的断言规则都是字符串,这些字符串会被PredicateFactory读取并处理,转变为路由判断的条件,例如Path=/user/**是按照路径匹配,这个规则是由PathRoutePredicateFactory类来处理的,像这样的断言工厂在SpringCloudGateway还有十几个:网关断言工厂