在上一篇文章Spring Cloud GateWay 路由转发规则介绍中我们讲解了SpringCloud Gateway内部提供的断言、谓语,让我们可以组合更精确的业务场景进行请求,既然SpringCloud GateWay担任了网关的角色,在之前Zuul可以通过服务名进行自动转发,SpringCloud Gateway是否可以实现自动转发呢?
初始化Gateway服务
Spring Cloud Gateway可以根据配置的断言、谓语进行满足条件转发,也可以自动同步服务注册中心的服务列表进行指定serviceId前缀进行转发,这里的serviceId是业务服务的spring.application.name配置参数。
SpringCloud 版本控制依赖
把SpringCloud的版本依赖添加到pom.xml内,如下所示:
//...
1.8
Greenwich.SR1
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
//...
我们本章使用Eureka作为服务注册中心来完成服务请求转发讲解,需要把Spring Cloud Gateway网关项目作为一个Client注册到Eureka Server,先来看下添加的依赖,pom.xml如下所示:
//...
org.springframework.cloud
spring-cloud-starter-gateway
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
//....
接下来我们需要开启Gateway服务注册中心的发现配置,开启后才能自动同步服务注册中心的服务列表,application.yml配置文件如下所示:
# 服务名称
spring:
application:
name: spring-cloud-gateway
# 开启 Gateway 服务注册中心服务发现
cloud:
gateway:
discovery:
locator:
enabled: true
# Eureka Server 配置
eureka:
client:
service-url:
defaultZone: http://localhost:10000/eureka/
# 配置Gateway日志等级,输出转发细节信息
logging:
level:
org.springframework.cloud.gatew