Spring Cloud 2025.0.0 "Northfields" 于 2025年5月29日正式发布,完全兼容 Spring Boot 3.5.0。本版本在微服务架构的多个核心组件上进行了重要改进和功能增强。
版本兼容性
-
Spring Boot: 3.5.0
-
发布代号: Northfields (按字母顺序命名传统)
-
主要变更: 包含破坏性变更,不支持平滑升级,细节请看这篇文章
Spring Cloud Gateway 重大更新
新增功能
1. Function & Stream 处理器集成
Gateway 现在原生支持 spring-cloud-function
和 spring-cloud-stream
处理器:
spring:
cloud:
gateway:
routes:
-id:function-route
uri:function://myFunction
predicates:
-Path=/api/process/**
-id:stream-route
uri:stream://myStreamProcessor
predicates:
- Path=/api/stream/**
技术优势:
-
支持函数式编程模型处理请求
-
集成消息驱动架构 (Kafka, RabbitMQ)
-
简化 Serverless 和事件驱动架构实现
2. Bucket4j 限流器支持
WebFlux 版本新增 Bucket4j 令牌桶算法支持:
spring:
cloud:
gateway:
server:
webflux:
routes:
-id:rate-limited-route
uri:http://backend-service
filters:
-name:Bucket4jRateLimit
args:
capacity:100
refill-rate:10
refill-period: PT1S
重要弃用
1. WebClientRouting 基础设施
-
状态: 已弃用,5.0 版本将移除
-
影响: 依赖此基础设施的路由逻辑需要迁移
-
建议: 使用 Gateway 提供的标准路由机制
2. 模块和启动器重命名
为明确区分 Web 技术栈和工作模式,引入新的命名规范:
旧名称 |
新名称 |
说明 |
spring-cloud-gateway-server |
spring-cloud-gateway-server-webflux |
WebFlux 服务器模式 |
spring-cloud-gateway-server-mvc |
spring-cloud-gateway-server-webmvc |
WebMVC 服务器模式 |
spring-cloud-starter-gateway-server |
spring-cloud-starter-gateway-server-webflux |
WebFlux 启动器 |
spring-cloud-starter-gateway-server-mvc |
spring-cloud-starter-gateway-server-webmvc |
WebMVC 启动器 |
spring-cloud-gateway-mvc |
spring-cloud-gateway-proxyexchange-webmvc |
WebMVC 代理交换 |
spring-cloud-gateway-webflux |
spring-cloud-gateway-proxyexchange-webflux |
WebFlux 代理交换 |
破坏性变更
X-Forwarded-* 头部默认禁用
出于安全考虑,X-Forwarded-* 和 Forwarded 头部功能默认禁用。
配置受信任代理:
# WebFlux 版本
spring:
cloud:
gateway:
server:
webflux:
trusted-proxies:"192\\.168\\..*|10\\..*"
# WebMVC 版本 (4.1.x+)
spring:
cloud:
gateway:
mvc:
trusted-proxies: "192\\.168\\..*|10\\..*"
安全影响: 防止恶意伪造代理头部,需要显式配置信任边界。但如果下游业务有依赖此请求头,请及时处理。
Spring Cloud Config 增强
AWS S3 YAML Profile 支持
Config Server 现在支持从 S3 读取 profile 特定的 YAML 文件:
spring:
cloud:
config:
server:
awss3:
bucket: my-config-bucket
region: us-west-2
文件结构示例:
s3://my-config-bucket/
├── application.yaml
├── application-dev.yaml
├── application-prod.yaml
└── application-test.yaml
Config Server 将根据激活的 profile 自动加载对应配置文件。
Spring Cloud Kubernetes 更新
组合配置源支持
Kubernetes ConfigMap 和 Secret 现在可作为组合配置源:
spring:
cloud:
kubernetes:
config:
sources:
-name:app-config
namespace:default
-name:db-secret
namespace:default
explicit-prefix: database
配置优先级:
1. 命令行参数
2. 系统属性
3. Kubernetes ConfigMap/Secret
4. application.yaml
5. 默认值
Spring Cloud Circuitbreaker 新特性
响应式隔离支持
新增对响应式编程模式支持:
@Component
publicclassReactiveService {
@Autowired
private ReactiveCircuitBreakerFactory circuitBreakerFactory;
public Mono<String> callExternalService() {
return circuitBreakerFactory
.create("external-service")
.run(
webClient.get().uri("/api/data").retrieve().bodyToMono(String.class),
throwable -> Mono.just("fallback-response")
);
}
}
配置示例:
resilience4j:
bulkhead:
instances:
external-service:
max-concurrent-calls: 10
max-wait-duration: 1000ms
Spring Cloud Netflix 改进
Eureka 客户端增强
支持 Apache HTTP Client 5 的 RequestConfig 定制:
@Bean
public EurekaClientHttpRequestFactorySupplier customRequestFactorySupplier() {
return () -> {
RequestConfigrequestConfig= RequestConfig.custom()
.setConnectTimeout(5000)
.setSocketTimeout(10000)
.setConnectionRequestTimeout(3000)
.build();
returnnewHttpComponentsClientHttpRequestFactory(
HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.build()
);
};
}
版本更新清单
所有模块已更新至最新版本以确保与 Spring Boot 3.5.0 兼容:
模块名称 |
版本 |
Spring Cloud Config |
4.3.0 |
Spring Cloud Gateway |
4.3.0 |
Spring Cloud Kubernetes |
3.3.0 |
Spring Cloud Circuitbreaker |
3.3.0 |
Spring Cloud Netflix |
4.3.0 |
Spring Cloud Build |
4.3.0 |
Spring Cloud Openfeign |
4.3.0 |
Spring Cloud Stream |
4.3.0 |
Spring Cloud Commons |
4.3.0 |
Spring Cloud Contract |
4.3.0 |
Spring Cloud Consul |
4.3.0 |
Spring Cloud Vault |
4.3.0 |
Spring Cloud Function |
4.3.0 |
Spring Cloud Bus |
4.3.0 |
Spring Cloud Zookeeper |
4.3.0 |
Spring Cloud Task |
3.3.0 |
Spring Cloud Starter Build |
2025.0.0 |
升级指南
前置条件
-
1. 升级 Spring Boot 至 3.5.0
-
2. Java 版本: 确保使用 Java 17+
升级步骤
1. 更新 BOM 版本
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2025.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2. Gateway 模块迁移
<!-- 旧依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- 新依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway-server-webflux</artifactId>
</dependency>
3. 配置属性迁移
# 旧配置
spring:
cloud:
gateway:
routes:
-id:example
uri:http://example.com
# 新配置
spring:
cloud:
gateway:
server:
webflux:
routes:
-id:example
uri: http://example.com
4. 安全配置更新
spring:
cloud:
gateway:
server:
webflux:
trusted-proxies: "10\\..*|192\\.168\\..*"
5. Spring Cloud Alibaba 兼容性注意事项
如果您的项目集成了 Spring Cloud Alibaba 组件,需特别注意 Spring Cloud 2025.0.0 与 Spring Cloud Alibaba 2023.0.3 版本之间存在日志依赖冲突问题,可能导致应用启动失败。