Spring Cloud 2025.0.0

软件服务 创建于:05-30 12:03

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. 1. 升级 Spring Boot 至 3.5.0

  2. 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 版本之间存在日志依赖冲突问题,可能导致应用启动失败。


原文:https://mp.weixin.qq.com/s/g1AFRXYeHoUsLrI_TNUqjg

原文地址:https://www.oschina.net/news/352695/spring-cloud-2025-0-0#comments

免责声明:本文来源于互联网,版权归合法拥有者所有,如有侵权请公众号联系管理员

* 本站提供的一些文章、资料是供学习研究之用,如用于商业用途,请购买正版。