文章
本文详细介绍了 Spring Framework 7 中即将推出的 API 版本控制支持,解决了 API 演进管理的长期挑战。它引入了`ApiVersionStrategy`作为服务端配置的核心契约,可以通过 MVC/WebFlux 配置或 Spring Boot 属性进行设置。通过`@RequestMapping`中新增的`version`属性,可以为注解式控制器声明 API 版本。对于函数式端点,则使用`version`请求谓词。包括支持“基线版本”(例如“1.2+”),以有效地处理增量更改。本文还介绍了通过`ApiVersionInserter`对`RestClient`和`WebClient`的客户端支持,以及`@HttpExchange`中 HTTP 接口客户端的`version`属性。最后,它强调了与`RestTestClient`、`WebTestClient`和`MockMvc`的集成测试能力。该功能旨在为 Spring 应用中常见的 API 版本控制实践提供基础组件。
本文介绍了模型上下文协议 (MCP),它是一种标准化协议,用于 AI 模型与数据库和 API 等外部工具和资源进行交互。文章详细阐述了 MCP 与编程语言无关的客户端-服务器架构,明确了 AI 应用开发者/宿主开发者和 MCP 服务器(提供者)的角色。文章重点介绍了 MCP 的关键特性,包括工具、资源、提示、日志记录、进度跟踪和客户端采样。随后,文章提供了一份实用的分步指南,指导如何构建 MCP 服务器(使用 Spring Boot 和 `@McpTool` 注解来暴露天气服务)和 MCP 客户端(与 Anthropic Claude 等 LLM 集成,以使用天气服务器)。文章还演示了日志记录、进度跟踪和采样等高级服务器功能,展示了双向 AI 交互,从而简化了复杂 AI 驱动的应用开发。
Spring Data 2025.1.0-M6 里程碑版本带来了一些关键更新和新功能。Spring Data MongoDB 现在通过移除默认的 `UUID` 和 `BigDecimal` 表示形式与 MongoDB Java 驱动对齐,要求显式配置以实现更安全的升级。通过 AOT(提前编译)处理,性能得到了显著提升。该处理现在在构建时为 Spring Data JDBC 和 Apache Cassandra 生成属性访问器和实体实例化器。这加快了启动速度,减少了内存消耗,尤其对 GraalVM 本机镜像有利。此外,Spring Data Commons 和 Spring Data REST 模块现在支持 Jackson 3。一个值得注意的新功能是集成了 Spring Data Neo4j 的向量搜索功能,支持存储库级别的向量索引和搜索方法,这些方法可以与现有的搜索功能和分数截止值相结合。此版本标志着发布候选阶段之前的最后一个里程碑。
本文宣布了 Spring for GraphQL 2.0 的第三个里程碑版本,重点介绍了关键进展。一个重要的更新是模式映射检查中增强的空安全支持,它确保 GraphQL 模式的空安全特性(例如,`Book` vs `Book!`)和应用程序类型之间的一致性,特别是对于 Kotlin 或空安全注解的项目,从而确保类型安全并防止运行时错误。此功能验证模式字段、`Class` 属性、`DataFetcher` 返回类型和字段参数的空安全特性。此外,该版本通过生成可为空的 `*Connection` 类型,更好地与官方 GraphQL 规范对齐。最后,请求取消支持已更新为使用 GraphQL Java 25 中的官方实现。文章最后指出即将发布的候选版本,并鼓励社区反馈。
本文宣布了 Spring Framework 7.0.0-M9 的发布,标志着发布候选版本之前的最后一个里程碑,计划于下个月发布。主要更新包括对新的容错性功能的重大改进,特别是围绕 `RetryException` 和异常处理,现在已记录了新的编程支持。Web 增强功能包括更新的 `HttpStatus` 类,与最新的 RFC9110 对齐,并且 JDK 的 `HttpClient` 变体,用于 `RestClient` 和 `RestTemplate`,现在支持 gzip 和 deflate 压缩的服务器响应。还引入了一个新的与 OpenTelemetry 对齐的观测惯例 `Observation Convention`,用于 Servlet 应用程序中的 HTTP 服务器观测,作为一个可选功能。对于 Kotlin 开发者,添加了一个 `PropagationContextElement` (上下文传播元素) 操作符,以改善协程中跟踪的上下文传播,并探索未来自动集成。值得注意的是,由于 Undertow 当前与 Servlet 6.1 不兼容,因此已移除 Undertow 支持,这是此 Spring Framework 世代的基线要求。文章还提到了 API 版本控制和空值功能的改进,以及 `@HttpServiceClient` 注解的临时停用,以便进一步收集社区反馈。此版本对于准备全面启动 Spring Framework 7.0 的开发者至关重要。