Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,它基于 Spring 5.0、Spring Boot 2.x 和 Project Reactor 等技术开发的网关,旨在提供一种简单、有效、统一的 API 路由管理方式。以下是 Spring Cloud Gateway 的基本配置步骤:
1. 添加依赖
在你的 Spring Boot 项目的 pom.xml
文件中添加 Spring Cloud Gateway 的依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
确保你的 pom.xml
文件也包含了 Spring Cloud 的依赖管理部分(Spring Cloud BOM)。
2. 配置路由
在 Spring Cloud Gateway 中,路由(Route)用于将传入的请求映射到后端服务。可以通过配置文件(通常是 application.yml
或 application.properties
)或 Java 代码来定义路由。
使用 YAML 配置
spring:
cloud:
gateway:
routes:
- id: my_route
uri: http://example.com
predicates:
- Path=/foo/**
上面的配置定义了一个 ID 为 my_route
的路由,所有匹配 /foo/**
路径的请求都会被转发到 http://example.com
。
使用 Java 配置
如果你更喜欢使用 Java 代码来配置路由,你可以定义一个 RouteLocator
Bean。
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("my_route", r -> r.path("/foo/**")
.uri("http://example.com"))
.build();
}
3. 其他配置
除了路由配置外,你还可以配置过滤器(Filter)、全局过滤器(GlobalFilter)、自定义异常处理、限流、日志等。
过滤器配置
过滤器用于修改请求和响应。你可以在路由定义中直接添加过滤器,或者定义全局过滤器。
自定义异常处理
你可以通过实现 GlobalFilter
或 ErrorWebExceptionHandler
来自定义异常处理逻辑。
4. 启动和测试
启动你的 Spring Boot 应用,并使用工具(如 Postman、curl 或浏览器)发送请求来测试你的 Gateway 配置。
5. 进阶配置
- 服务发现:如果你使用服务发现(如 Eureka),你可以将路由的 URI 配置为服务名,而不是具体的 URL。
- 负载均衡:Spring Cloud Gateway 集成了 Ribbon,你可以使用它来进行客户端负载均衡。
- 熔断:你可以使用 Hystrix 或 Resilience4j 来实现熔断机制。
- 安全:你可以通过配置 Spring Security 来为 Gateway 添加安全控制。
- 限流:你可以使用 Spring Cloud Gateway 的内置限流功能,或者结合其他限流库(如 Sentinel)来实现。
以上只是 Spring Cloud Gateway 的基本配置和使用介绍,更多高级功能和配置请参考 Spring Cloud Gateway 的官方文档。