Spring Cloud 2025 正式发布啦

news2025/6/7 3:35:09

文章目录

  • 一、版本兼容性
  • 二、Spring Cloud Gateway 重大更新
    • 1、新增功能
      • 1.1 Function & Stream 处理器集成
      • 1.2 Bucket4j 限流器支持
    • 2、重要弃用
      • 2.1. WebClientRouting 基础设施
      • 2.2. 模块和启动器重命名
    • 3、破坏性变更
      • 3.1 X-Forwarded-* 头部默认禁用
      • 3.2 配置受信任代理:
      • 3.3 安全影响:
  • 三、Spring Cloud Config 增强
    • AWS S3 YAML Profile 支持
  • 四、Spring Cloud Kubernetes 更新
    • 组合配置源支持
  • 五、Spring Cloud Circuitbreaker 新特性
    • 响应式隔离支持
  • 六、Spring Cloud Netflix 改进
    • Eureka 客户端增强
  • 七、版本更新清单
  • 八、升级指南
    • 1、前置条件
    • 2、升级步骤
      • 2.1. 更新 BOM 版本
      • 2.2. Gateway 模块迁移
      • 2.3. 配置属性迁移
      • 2.4. 安全配置更新
      • 2.5. Spring Cloud Alibaba 兼容性注意事项

Spring Cloud 2025.0.0 “Northfields” 于 2025年5月29日正式发布,完全兼容 Spring Boot 3.5.0。本版本在微服务架构的多个核心组件上进行了重要改进和功能增强。

一、版本兼容性

• Spring Boot: 3.5.0
• 发布代号: Northfields (按字母顺序命名传统)
• 主要变更: 包含破坏性变更,不支持平滑升级,细节请看这篇文章

二、Spring Cloud Gateway 重大更新

1、新增功能

1.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 和事件驱动架构实现

1.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

2、重要弃用

2.1. WebClientRouting 基础设施

• 状态: 已弃用,5.0 版本将移除
• 影响: 依赖此基础设施的路由逻辑需要迁移
• 建议: 使用 Gateway 提供的标准路由机制

2.2. 模块和启动器重命名

为明确区分 Web 技术栈和工作模式,引入新的命名规范:

旧名称新名称说明
spring-cloud-gateway-serverspring-cloud-gateway-server-webfluxWebFlux 服务器模式
spring-cloud-gateway-server-mvcspring-cloud-gateway-server-webmvcWebMVC 服务器模式
spring-cloud-starter-gateway-serverspring-cloud-starter-gateway-server-webfluxWebFlux 启动器
spring-cloud-starter-gateway-server-mvcspring-cloud-starter-gateway-server-webmvcWebMVC 启动器
spring-cloud-gateway-mvcspring-cloud-gateway-proxyexchange-webmvcWebMVC 代理交换
spring-cloud-gateway-webfluxspring-cloud-gateway-proxyexchange-webfluxWebFlux 代理交换

3、破坏性变更

3.1 X-Forwarded-* 头部默认禁用

出于安全考虑,X-Forwarded-* 和 Forwarded 头部功能默认禁用。

3.2 配置受信任代理:

# WebFlux 版本
spring:
cloud:
    gateway:
      server:
        webflux:
          trusted-proxies:"192\\.168\\..*|10\\..*"

# WebMVC 版本 (4.1.x+)
spring:
cloud:
    gateway:
      mvc:
        trusted-proxies: "192\\.168\\..*|10\\..*"

3.3 安全影响:

防止恶意伪造代理头部,需要显式配置信任边界。但如果下游业务有依赖此请求头,请及时处理。

三、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 Config4.3.0
Spring Cloud Gateway4.3.0
Spring Cloud Kubernetes3.3.0
Spring Cloud Circuitbreaker3.3.0
Spring Cloud Netflix4.3.0
Spring Cloud Build4.3.0
Spring Cloud Openfeign4.3.0
Spring Cloud Stream4.3.0
Spring Cloud Commons4.3.0
Spring Cloud Contract4.3.0
Spring Cloud Consul4.3.0
Spring Cloud Vault4.3.0
Spring Cloud Function4.3.0
Spring Cloud Bus4.3.0
Spring Cloud Zookeeper4.3.0
Spring Cloud Task3.3.0
Spring Cloud Starter Build2025.0.0

八、升级指南

1、前置条件

1.1. 升级 Spring Boot 至 3.5.0
1.2. Java 版本: 确保使用 Java 17+

2、升级步骤

2.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.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>

2.3. 配置属性迁移

# 旧配置
spring:
cloud:
    gateway:
      routes:
        -id:example
          uri:http://example.com

# 新配置  
spring:
cloud:
    gateway:
      server:
        webflux:
          routes:
            -id:example
              uri: http://example.com

2.4. 安全配置更新

spring:
  cloud:
    gateway:
      server:
        webflux:
          trusted-proxies: "10\\..*|192\\.168\\..*"

2.5. Spring Cloud Alibaba 兼容性注意事项

如果您的项目集成了 Spring Cloud Alibaba 组件,需特别注意 Spring Cloud 2025.0.0 与 Spring Cloud Alibaba 2023.0.3 版本之间存在日志依赖冲突问题,可能导致应用启动失败。

解决方案:

  1. 可参考 PIG 微服务平台的解决方案 (https://gitee.com/log4j/pig/tree/jdk17-dev)
  2. 或通过显式排除冲突依赖并引入兼容版本
  3. 等待 Spring Cloud Alibaba 发布完全兼容的 2025.x 版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2402416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文速通Python并行计算:12 Python多进程编程-进程池Pool

一文速通 Python 并行计算&#xff1a;12 Python 多进程编程-进程池 Pool 摘要&#xff1a; 在Python多进程编程中&#xff0c;Pool类用于创建进程池&#xff0c;可并行执行多个任务。通过map、apply等方法&#xff0c;将函数和参数分发到子进程&#xff0c;提高CPU利用率&…

Web前端之原生表格动态复杂合并行、Vue

MENU 效果公共数据纯原生StyleJavaScript vue原生table 效果 原生的JavaScript原生table null 公共数据 const list [{id: "a1",title: "第一列",list: [{id: "a11",parentId: "a1",title: "第二列",list: [{ id: "…

『uniapp』把接口的内容下载为txt本地保存 / 读取本地保存的txt文件内容(详细图文注释)

目录 预览效果思路分析downloadTxt 方法readTxt 方法 完整代码总结 欢迎关注 『uniapp』 专栏&#xff0c;持续更新中 欢迎关注 『uniapp』 专栏&#xff0c;持续更新中 预览效果 思路分析 downloadTxt 方法 该方法主要完成两个任务&#xff1a; 下载 txt 文件&#xff1a;通…

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 时间事件处理部分)

揭秘高效存储模型与数据结构底层实现 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 时间事件&#xff1a;serverCron函数更新服务器时间缓存更新LRU时钟-lruclock更新服务器每秒执行命令次…

【DAY40】训练和测试的规范写法

内容来自浙大疏锦行python打卡训练营 浙大疏锦行 知识点&#xff1a; 彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中展平操作&#xff1a;除第一个维度batchsize外全部展平dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模式关闭drop…

el-select 实现分页加载,切换也数滚回到顶部,自定义高度

el-select 实现分页加载&#xff0c;切换也数滚回到顶部&#xff0c;自定义高度 1.html <el-form-item label"俱乐部&#xff1a;" prop"club_id" label-width"120px"><el-select :disabled"Boolean(match_id)" style"w…

Langchaine4j 流式输出 (6)

Langchaine4j 流式输出 大模型的流式输出是指大模型在生成文本或其他类型的数据时&#xff0c;不是等到整个生成过程完成后再一次性 返回所有内容&#xff0c;而是生成一部分就立即发送一部分给用户或下游系统&#xff0c;以逐步、逐块的方式返回结果。 这样&#xff0c;用户…

学习经验分享【40】目标检测热力图制作

目标检测热力图在学术论文&#xff08;尤其是计算机视觉、深度学习领域&#xff09;中是重要的可视化分析工具和论证辅助手段&#xff0c;可以给论文加分不少。主要作用一是增强论文的可解释性与说服力&#xff1a;论文中常需解释模型 “如何” 或 “为何” 检测到目标&#xf…

C#里与嵌入式系统W5500网络通讯(3)

有与W5500通讯时,需要使用下面的寄存器: PHYCFGR (W5500 PHY Configuration Register) [R/W] [0x002E] [0b10111XXX] PHYCFGR configures PHY operation mode and resets PHY. In addition, PHYCFGR indicates the status of PHY such as duplex, Speed, Link. 这张表格详细…

用OpenNI2获取奥比中光Astra Pro输出的深度图(win,linux arm64 x64平台)

搞了一个奥比中光Astra Pro&#xff0c;想在windows平台&#xff0c;和linux rk3588 &#xff08;香橙派&#xff0c;ubuntu2404,debian)上获取深度信息&#xff0c;之前的驱动下载已经不好用了,参考如下 Astra 3D相机选型建议 - 知乎https://zhuanlan.zhihu.com/p/594485674 …

Unity VR/MR开发-VR设备与适用场景分析

视频讲解链接&#xff1a;【XR马斯维】VR/MR设备与适用场景分析&#xff1f;【UnityVR/MR开发教程--入门】_游戏热门视频

Linux: network: switch:arp cache更新规则 [chatGPT]

文章目录 介绍概念普通包带有不同的mac,是否更新arp cache?普通包带有相同的mac,是否刷新 aging timeswitch是否会主动学习介绍 关于arp cache在switch侧的行为。有很多问题需要理解。 概念 HP L3 - IP Services Configuration Guide 文档里有写:dynamic arp entry的解说…

Java网络编程API 1

Java中的网络编程API一共有两套&#xff1a;一套是UDP协议使用的API&#xff1b;另一套是TCP协议使用的API。这篇文章我们先来介绍UDP版本的API&#xff0c;并尝试来写一个回显服务器&#xff08;接收到的请求是什么&#xff0c;返回的响应就是什么&#xff09;。 UDP数据报套…

兰亭妙微 | 医疗软件的界面设计能有多专业?

从医疗影像系统到手术机器人控制界面&#xff0c;从便携式病原体检测设备到多平台协同操作系统&#xff0c;兰亭妙微为众多医疗设备研发企业&#xff0c;打造了兼具专业性与可用性的交互界面方案。 我们不仅做设计&#xff0c;更深入理解医疗场景的实际需求&#xff1a; 对精…

前端原生构建交互式进度步骤组件(Progress Steps)

在现代网页设计中&#xff0c;进度步骤&#xff08;Progress Steps&#xff09; 是一种常见的 UI 模式&#xff0c;常用于引导用户完成注册流程、多步表单、教程或任何需要分步骤操作的场景。本文将带你从零开始构建一个美观且功能完整的 “进度步骤”组件&#xff0c;并详细讲…

【基于阿里云搭建数据仓库(离线)】Data Studio创建资源与函数

Data Studio支持在您的数据分析代码中引用自定义的资源和函数&#xff08;支持MaxCompute、EMR、CDH、Flink&#xff09;&#xff0c;您需要先创建或上传资源、函数至目标工作空间&#xff0c;上传后才可在该工作空间的任务中使用。您可参考本文了解如何使用DataWorks可视化方式…

web3-以太坊智能合约基础(理解智能合约Solidity)

以太坊智能合约基础&#xff08;理解智能合约/Solidity&#xff09; 无需编程经验&#xff0c;也可以帮助你了解Solidity独特的部分&#xff1b;如果本身就有相应的编程经验如java&#xff0c;python等那么学起来也会非常的轻松 一、Solidity和EVM字节码 实际上以太坊链上储存…

【C++项目】负载均衡在线OJ系统-2

文章目录 oj_server模块编写oj_server框架的搭建-oj_server/oj_server.cpp 路由框架 oj_model模块编写题目信息设置v1.文件版本-common/util.hpp boost库spilt函数的使用-oj_server/oj_model_file.hpp 文件版本model编写v2.mysql数据库版本1.mysql创建授权用户、建库建表录入操…

GC1809:高性能24bit/192kHz音频接收芯片解析

1. 芯片概述 GC1809 是数字音频接收芯片&#xff0c;支持IEC60958、S/PDIF、AES3等协议&#xff0c;集成8选1输入切换、低抖动时钟恢复和24bit DAC&#xff0c;适用于家庭影院、汽车音响等高保真场景。 核心特性 高精度&#xff1a;24bit分辨率&#xff0c;动态范围105dB&…

2025年06月05日Github流行趋势

项目名称&#xff1a;onlook 项目地址url&#xff1a;https://github.com/onlook-dev/onlook项目语言&#xff1a;TypeScript历史star数&#xff1a;16165今日star数&#xff1a;1757项目维护者&#xff1a;Kitenite, drfarrell, spartan-vutrannguyen, apps/devin-ai-integrat…