Spring Boot 3.3新特性发布

Spring Boot 3.3 现已正式发布!此版本包含大量更新,包括多项新功能。我们决定进行一些挑选,并查看最重要的变化,其中包括对类数据共享 (CDS) 的支持,以加快应用程序启动速度。

1.新的服务连接

Spring Boot 中改进或添加了几个服务连接:

  • 增加了对 Apache ActiveMQ Artemis 的支持;
  • apache/activemq-classic增加了docker镜像和ActiveMQContainertestcontainer对ActiveMQ服务连接的支持;
  • 增加了与osixia/openldap容器的LDAP服务连接支持;
  • Spring Boot Docker Compose 除了将检测和配置 Bitnami 容器之外,还将为多种技术提供官方镜像,包括但不限于 Elasticsearch、MongoDB 和 PostgreSQL。

2.CDS 支持

类数据共享 (CDS) 是一项 JVM 功能,它通过创建已初始化类的档案来帮助最大限度地减少 Java 应用程序的启动,这些档案可用于进一步的应用程序启动,甚至在 JVM 实例之间共享。

-Djarmode=tools

Spring Boot 已经支持在(取代)的帮助下从应用程序 uber jar 中提取层

-Djarmode=layeredtools

,这使开发人员能够加速 docker pull 和容器镜像更新。就 CDS 而言,当您指定两个 JVM 标志时,Spring Boot 提供了一种在应用程序退出时为应用程序创建 CDS 存档 (AppCDS) 的便捷方法:

-XX:ArchiveClassesAtExit=application.jsa

创建 CDS 档案;

-Dspring.context.exit=onRefresh

启动并立即退出应用程序。

因此,一旦ApplicationContext刷新,进程就会自动退出,但生命周期尚未开始。

要为应用程序创建 CDS 存档,您的 JDK 必须具有基础映像。

如果缩短应用程序启动时间对您来说至关重要,那么 CDS 可以被视为标准 JVM 与检查点协调恢复 (CRaC)和 GraalVM Native Image 等创新解决方案之间的中介。无需更改应用程序代码即可使用 CDS,但您可能需要调整运行时设置并考虑几个重要方面(例如,类路径和 JVM 版本必须与构建存档时使用的相同)。

我们相信,将 CDS 与 Spring Boot 应用程序结合使用具有令人兴奋的前景。

3.使用 SNI 自动配置嵌入式 Web 服务器SSL

服务器名称指示 (SNI) 是 TLS 协议的扩展,可用于指定客户端设备尝试访问的域名。现在,在配置嵌入式 Web 服务器(Tomcat、Netty 或 Undertow)时,支持该功能。可以通过spring.ssl.bundle.properties 或 .yaml 文件中的属性以声明方式配置具有唯一 SSL 信任材料的多个主机名。

4.其他重要改进

4.1.观察

Spring Boot 可观察性功能进行了以下改进:

  • 增加了对 Micrometer@SpanTag注释的支持,使您能够为自定义跨度添加标签;
  • 现在可以使用属性来启用对简单、直接和流监听器的观察RabbitTemplate;
  • 增加了对 Brave 和 OpenTelemetry 的标记字段的支持以及对 Brave 的本地字段的支持;
  • unknown_service如果未指定应用程序名称以符合 OpenTelemetry 规范,则用于 OpenTelemetry;
  • spring.pulsar.listener.observation-enabled将和属性的默认值spring.pulsar.template.observations-enabled从 true 更改为 false;
  • 实现了一个新的基于 JDK HttpClient 的 Zipkin 发送器;
    将 Brave 更新至 6.0,将 Zipkin 更新至 3.0。

4.2.支持 Prometheus Client 1.x

Spring Boot 3.3 支持 Prometheus Client 1.x。Prometheus Client 1.0.0是一个备受期待的流行 Java 指标库版本,它包含一些突破性的变化,包括但不限于对本机直方图的内置支持、与 OpenTelemetry 跟踪的无缝集成以及对 OpenTelemetry Exporter 的支持。

4.3.SBOM 执行器端点

spring-boot-actuator 模块现在包含 SBOM 端点。此外,spring-boot-parent-starter 还包含其他配置,以便更方便地配置 SBOM 插件。

相关推荐
wyiyiyi9 分钟前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
没有bug.的程序员29 分钟前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
一只爱撸猫的程序猿40 分钟前
使用Spring AI配合MCP(Model Context Protocol)构建一个"智能代码审查助手"
spring boot·aigc·ai编程
甄超锋1 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国1 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~1 小时前
《设计模式》装饰模式
java·设计模式
Jimmy1 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
A尘埃1 小时前
企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)
java·金融·政务·智能客服系统
AntBlack2 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
青云交2 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图