SpringBoot 3.1 正式发布,赶紧上车!

news/2024/10/25 11:27:49/

Spring Boot 3.1.0 现已发布,此版本添加了大量新功能和改进。

Spring Boot 各个版本对 Java 版本的要求如下:

亮点

  • Spring Authorization Server 的自动配置

  • 支持在开发时使用 Testcontainers 和 Docker Compose 管理外部服务

  • 简化集成测试中 Testcontainers 的配置

  • 支持 Mockito 单元测试

升级 HttpClient 5

在 Spring Framework 6 中,推荐使用 Apache HttpClient 5,因此已经移除了对 Apache HttpClient 4 与 RestTemplate 的支持。Spring Boot 3.0 包含了 HttpClient 4 和 5 的依赖管理。但如果使用了 HttpClient 4 仍会导致使用 RestTemplate 时出现难以诊断的错误。

Spring Boot 3.1 为了鼓励用户改用 HttpClient 5 取代 HttpClient 4,移除了 HttpClient 4 的依赖管理。

Servet 和 Filter 注册优化

如果 ServletRegistrationBean 和 FilterRegistrationBean 类的注册失败,将抛出 IllegalStateException 异常而不是记录警告。如果需要保持旧有的行为,则需要在注册 bean 上调用 setIgnoreRegistrationFailure(true)方法。

Git Commit ID Maven 插件版本属性

覆盖 io.github.git-commit-id:git-commit-id-maven-plugin 版本的属性已更新以匹配其 artifact 名称。适应此更改,在 pom.xml 文件中需要将 git-commit-id-plugin.version 替换为 git-commit-id-maven-plugin.version。

Spring Kafka 重试主题自动配置

如果使用了 Apache Kafka 的自动配置重试主题(spring.kafka.retry.topic.enabled: true),并使用具有最大延迟的指数回退,则所有最大延迟水平的重试现在都发送到相同的主题。以前,即使超过了最大延迟,每个重试都会使用一个单独的主题。

Testcontainers 的依赖管理

Spring Boot 的依赖管理现在包括 Testcontainers。如果需要,可以使用 testcontainers.version 属性覆盖由 Spring Boot 管理的版本。

Hibernate 6.2

Spring Boot 3.1 升级到 Hibernate 6.2。请参阅 Hibernate 6.2 迁移指南,了解此更改可能对应用程序产生的影响。

Jackson 2.15

Spring Boot 3.1 升级到 Jackson 2.15。请参阅 Jackson Wiki,了解此更改可能对应用程序产生的影响。

2.15 中显着的更改是引入了处理限制。要调整这些约束,请定义一个类似于以下内容的 Jackson2ObjectMapperBuilderCustomizer:

@Bean
Jackson2ObjectMapperBuilderCustomizer customStreamReadConstraints() {return (builder) -> builder.postConfigurer((objectMapper) -> objectMapper.getFactory().setStreamReadConstraints(StreamReadConstraints.builder().maxNestingDepth(2000).build()));
}

升级 Mockito 5

Spring Boot 3.1 升级到 Mockito 5,具体是 5.3。请参阅 Mockito 发布说明,了解 5.x 系列中的显着更改。

Health Groups 默认验证健康状态

健康组成员的配置现在将在启动时进行验证。如果包含或排除了不存在的健康指标,则启动将失败。设置 management.endpoint.health.validate-group-membership 为 false 可以禁用此验证,恢复早期版本的行为。

服务连接

引入了新的服务连接概念,由 ConnectionDetails bean 在应用程序中表示。这些 bean 提供了建立与远程服务连接所需的必要详细信息,而 Spring Boot 的自动配置已更新为消耗 ConnectionDetails bean。当这些 bean 可用时,它们将优先于任何与连接相关的配置属性。控制连接池大小和行为等与连接本身无关的配置属性仍将使用。

这项低级功能旨在作为自动配置服务连接的其他更高级特性的构建块,通过定义 ConnectionDetails bean 来实现。。

Docker Compose

新模块spring-boot-docker-compose提供了与 Docker Compose 的集成。当应用程序启动时,Docker Compose 集成将在当前工作目录中查找配置文件。支持以下文件:

  • compose.yaml

  • compose.yml

  • docker-compose.yaml

  • docker-compose.yml

要使用非标准文件,请设置 spring.docker.compose.file 属性。

默认情况下,配置文件中声明的服务将使用 docker-compose up 启动,并将这些服务的连接详细信息 bean 添加到应用程序上下文中,以便可以在不进行任何进一步配置的情况下使用这些服务。当应用程序停止时,将使用 docker-compose down 关闭服务。可以使用 spring.docker.compose.lifecycle-management、spring.docker.compose.startup.command 和 spring.docker.compose.shutdown.command 配置属性自定义此生命周期管理及用于启动和关闭服务的命令。

请参阅参考文档以获取更多详细信息,包括目前支持的服务列表。

SSL 配置

现在可以使用属性配置 SSL 信任材料,例如 Java KeyStores 和 PEM 编码的证书,并以更一致的方式应用于各种类型的连接,例如嵌入式 Web 服务器、数据服务、RestTemplate 和 WebClient。

请参阅参考文档以获取更多信息。

Spring Authorization Server 自动配置

此版本中新增了对 Spring Authorization Server 项目的支持,同时提供了新的spring-boot-starter-oauth2-authorization-server启动器。有关详细信息,请参阅 Spring Boot 参考文档中的 Authorization Server 部分。

Docker 镜像构建

镜像创建日期和时间

spring-boot:build-image Maven 目标和 bootBuildImage Gradle 任务现在具有 createdDate 配置选项,可用于将生成图像元数据中的 Created 字段的值设置为用户指定的日期或 now 以使用当前日期和时间。有关详细信息,请参阅 Gradle 和 Maven 插件文档。

镜像应用程序目录

spring-boot:build-image Maven 目标和 bootBuildImage Gradle 任务现在具有 applicationDirectory 配置选项,可用于设置在构建包消耗之前将应用程序内容上传到构建器映像中的位置。这也将是生成的映像中应用程序内容的位置。有关详细信息,请参阅 Gradle 和 Maven 插件文档。


http://www.ppmy.cn/news/237087.html

相关文章

超高性价比的挂耳式蓝牙耳机推荐

现在许多运动的小伙伴都有听音乐的习惯,但是普通的耳机并不是专门为运动设计的,在运动过程中容易出现缠绕、掉落、接触不良等问题,影响我们日常运动体验。 如何选择合适的运动挂耳式耳机?适合跑步运动的挂耳式耳机又有哪些&#…

编码器 | 基于 Transformers 的编码器-解码器模型

基于 transformer 的编码器-解码器模型是 表征学习 和 模型架构 这两个领域多年研究成果的结晶。本文简要介绍了神经编码器-解码器模型的历史,更多背景知识,建议读者阅读由 Sebastion Ruder 撰写的这篇精彩 博文。此外,建议读者对 自注意力 (…

看看Angular有啥新玩法!手把手教你在Angular15中集成报表插件

Angular15新特性 Angular框架(以下简称“Angular”)作为一款由谷歌开发的Web应用程序框架,其强大的依赖注入系统、可重复使用的模块化开发理念和响应式编程模式等特点让Angular一问世便取得了巨大的关注和流量。 截止目前为止,An…

数据库管理-第八十一期 保姆级EMCC搭建教程(20230606)

数据库管理 2023-06-06 第八十一期 保姆级EMCC搭建教程1环境说明2 EMCC安装前准备3安装EMCC4 进入EMCC5 添加主机与数据库5.1 添加主机5.2 添加数据库 6 注意事项总结 第八十一期 保姆级EMCC搭建教程 EMCC,全称Oracle Enterprise Manager Cloud Control&#xff0c…

2023智源大会议程公开丨视觉与多模态大模型论坛

6月9日,2023北京智源大会,将邀请AI领域的探索者、实践者、以及关心智能科学的每个人,共同拉开未来舞台的帷幕,你准备好了吗?与会知名嘉宾包括,图灵奖得主Yann LeCun、OpenAI创始人Sam Altman、图灵奖得主Ge…

计算机按键闹钟怎么关闭,电子手表怎么关闭闹钟

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。 电子手表关闭闹钟的方法是: 1、电子表侧面有四个按钮,同时按看“日期”和“闹钟”的两个按钮就可以打开或关闭闹钟; 2、按两次Mode调闹钟&#x…

智能手表音频特性测试_儿童手表电磁辐射测试这一环节不可少

随着智能设备的推广,高效、安全、防丢失的儿童手表越来越多地出现在孩子们的手腕上,家长联系和监护孩子也便捷了不少。然而,由于儿童正处于生长发育时期,身体各器官的功能都未发育完善儿童手表手机在使用时又贴近脸或身体&#xf…

儿童智能体温计开发文档_实力不容小觑!小米发布高端旗舰儿童学习手表及米家电子体温计...

最近,小米发布了两款产品:高端旗舰儿童学习手表和米家电子体温计,这两款产品自发售以来,受到了广大消费者的一致好评,同时,也有很多人想把这两款产品当做新年礼物送给亲朋好友。 米兔儿童学习手表4Pro具备双…