当前位置: 首页 > article >正文

Spring Cloud 2025 正式发布啦

文章目录

  • 一、版本兼容性
  • 二、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-routeuri:function://myFunctionpredicates:-Path=/api/process/**-id:stream-routeuri:stream://myStreamProcessorpredicates:- Path=/api/stream/**

技术优势:
• 支持函数式编程模型处理请求
• 集成消息驱动架构 (Kafka, RabbitMQ)
• 简化 Serverless 和事件驱动架构实现

1.2 Bucket4j 限流器支持

WebFlux 版本新增 Bucket4j 令牌桶算法支持:

spring:cloud:gateway:server:webflux:routes:-id:rate-limited-routeuri:http://backend-servicefilters:-name:Bucket4jRateLimitargs:capacity:100refill-rate:10refill-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-bucketregion: 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-confignamespace:default-name:db-secretnamespace:defaultexplicit-prefix: database

配置优先级:

  1. 命令行参数
  2. 系统属性
  3. Kubernetes ConfigMap/Secret
  4. application.yaml
  5. 默认值

五、Spring Cloud Circuitbreaker 新特性

响应式隔离支持

新增对响应式编程模式支持:

@Component
publicclassReactiveService {@Autowiredprivate 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: 10max-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:exampleuri:http://example.com# 新配置  
spring:
cloud:gateway:server:webflux:routes:-id:exampleuri: 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 版本

相关文章:

Spring Cloud 2025 正式发布啦

文章目录 一、版本兼容性二、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.…...

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

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

相机Camera日志分析之二十五:高通相机Camx 基于预览1帧的process_capture_request四级日志分析详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:相机Camera日志分析之二十四:高通相机Camx 基于预览1帧的process_capture_request三级日志分析详解 ok 这一篇我们开始讲: 相机Camera日志分析之二十五:高通相机Camx 基于预览1帧的process_capture_…...

React从基础入门到高级实战:React 实战项目 - 项目一:在线待办事项应用

React 实战项目&#xff1a;在线待办事项应用 欢迎来到本 React 开发教程专栏的第 26 篇&#xff01;在之前的 25 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件、状态、路由和性能优化等核心知识。这一次&#xff0c;我们将通过一个…...

云部署实战:基于AWS EC2/Aliyun ECS与GitHub Actions的CI/CD全流程指南

在当今快速迭代的软件开发环境中&#xff0c;云部署与持续集成/持续交付(CI/CD)已成为现代开发团队的标配。本文将详细介绍如何利用AWS EC2或阿里云ECS结合GitHub Actions构建高效的CI/CD流水线&#xff0c;从零开始实现自动化部署的全过程。 最近挖到一个宝藏级人工智能学习网…...

golang 如何定义一种能够与自身类型值进行比较的Interface

定义一种具有比较能力的类型是一种常见需求&#xff0c;比如对一组相同类型的值进行排序&#xff0c;就需要进行两两比较&#xff0c;那么在Go语言中有没有办法定义一种具有比较能力的Interface&#xff0c;实现该接口的类型都具备比较能力呢&#xff0c;最常见最容易的办法是定…...

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;通…...

C/C++ 面试复习笔记(2)

C语言如何实现快速排序算法&#xff1f; 答案&#xff1a;快排是一种分治算法&#xff0c;选择一个基准元素&#xff0c;将数据划分成两部分&#xff0c;然后递归排序 补充&#xff1a; void quick_sort(int arr[], int start, int end) {//判断是否需要排序if (start > …...

宝马集团推进数字化转型:强化生产物流与财务流程,全面引入SAP现代架构

2025年6月&#xff0c;宝马集团宣布在生产物流与财务流程领域取得重大数字化成果。这些进展标志着集团全球范围内采用基于云的新型SAP架构进入关键阶段&#xff0c;旨在提升运营效率、透明度和AI能力&#xff0c;为未来工业发展奠定技术基础。 一、生产物流全球数字化部署 宝…...

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

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

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

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

C语言 标准I/O函数全面指南

C标准I/O函数全面指南 本指南详细介绍了C语言中用于文件操作的标准输入/输出函数&#xff0c;包括单字符I/O、字符串I/O、格式化I/O、块I/O以及文件光标操作。每个部分包含函数定义、使用说明和实用示例&#xff0c;适合学习、复习以及博客发布。内容采用清晰的Markdown格式&a…...

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;用户…...

Jenkins:自动化流水线的基石,开启 DevOps 新时代

从持续集成到持续交付的全流程自动化工具 一、什么是 Jenkins&#xff1f; Jenkins 是一款开源的 自动化服务器&#xff0c;专注于持续集成&#xff08;CI&#xff09;和持续交付&#xff08;CD&#xff09;。它通过插件化的架构支持几乎所有的开发、运维和测试工具&#xff…...

学习经验分享【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数据报套…...

Android协程学习

目录 Android上的Kotlin协程介绍基本概念与简单使用示例协程的高级用法 结构化并发线程调度器(Dispatchers)自定义调度器并发:同步 vs 异步 异步并发(async 并行执行)同步顺序执行协程取消与超时 取消机制超时控制异步数据流 Flow协程间通信 使用 Channel使用 StateFlow /…...

Angular报错:cann‘t bind to ngClass since it is‘t a known property of div

遇到的错误&#xff1a; Cant bind to ngClass since it isnt a known property of div这个错误是 Angular 中 最常见的模板编译错误之一&#xff0c;通常出现在你试图使用 ngClass 指令&#xff0c;但 Angular 没有识别它的情况下。 ✅ 错误的根本原因 Angular 不知道 ngCla…...

uniapp+vue3实现CK通信协议(基于jjc-tcpTools)

1. TCP 服务封装 (tcpService.js) export class TcpService {constructor() {this.connections uni.requireNativePlugin(jjc-tcpTools)this.clients new Map() // 存储客户端连接this.servers new Map() // 存储服务端实例}// 创建 TCP 服务端 (字符串模式)createStringSe…...

Python爬虫实战:研究urlparse库相关技术

1 引言 1.1 研究背景与意义 网络爬虫作为互联网数据采集的核心技术,在信息检索、舆情分析、数据挖掘等领域具有广泛应用。随着 Web 技术的发展,现代网站 URL 结构日益复杂,包含路径参数、查询参数、锚点等多种组件,且存在相对路径、URL 编码等问题,给爬虫开发带来了挑战…...

解锁FastAPI与MongoDB聚合管道的性能奥秘

title: 解锁FastAPI与MongoDB聚合管道的性能奥秘 date: 2025/05/20 20:24:47 updated: 2025/05/20 20:24:47 author: cmdragon excerpt: MongoDB聚合管道是一种分阶段处理数据的流水线&#xff0c;通过$match、$group等阶段对文档进行特定操作&#xff0c;具有内存优化和原生操…...

软件工程方法论:在确定性与不确定性的永恒之舞中寻找平衡

更多精彩请访问&#xff1a;通义灵码2.5——基于编程智能体开发Wiki多功能搜索引擎-CSDN博客 当我们谈论“软件工程”时&#xff0c;“工程”二字总暗示着某种如桥梁建造般的精确与可控。然而&#xff0c;软件的本质却根植于人类思维的复杂性与需求的流变之中。软件工程方法论的…...

Unity中的MonoSingleton<T>与Singleton<T>

1.MonoSingleton 代码部分 using UnityEngine;/// <summary> /// MonoBehaviour单例基类 /// 需要挂载到GameObject上使用 /// </summary> public class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T> {private static T _instance;…...

怎么通过 jvmti 去 hook java 层函数

使用 JVMTI 手动实现 Android Java 函数 Hook 要通过 JVMTI 手动实现 Android Java 函数 Hook&#xff0c;需要编写 Native 层代码并注入到目标进程中。以下是详细步骤和示例&#xff1a; 一、核心实现原理 JVMTI 提供两种主要 Hook 方式&#xff1a; Method Entry/Exit 事…...