0


Spring Boot 3.4.0 发行:革新与突破的里程碑

🧑 博主简介:CSDN博客专家历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“**历代文学**”)总架构师,

15年

工作经验,精通

Java编程

高并发设计

Springboot和微服务

,熟悉

Linux

ESXI虚拟化

以及

云原生Docker和K8s

,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作请加本人wx(注明来自csdn):

foreast_sea 

在这里插入图片描述


在这里插入图片描述

Spring Boot 3.4.0 发行:革新与突破的里程碑

Spring Boot 3.4.0

于2024-11-21正式发布:
在这里插入图片描述

引言

本次

Spring Boot 3.4.0

的发布带来了一系列令人期待和关注的重要特性,显著提升了开发体验与应用性能,本次带来的更新核心的几点如下:

一、日志与配置优化

  • 结构化日志记录:支持多种格式如 ECS、GELF 和 Logstash,通过logging.structured.format.filelogging.structured.format.console属性便捷开启,使日志规整有序,便于分析处理,极大助力于分布式系统的监控与问题排查。
  • 配置元数据升级:注释处理器可检测Enum默认值,减少手动元数据配置,让配置过程更加智能高效,降低出错概率。

二、功能组件增强

  • Spring Pulsar 拓展:可配置默认租户和命名空间,新增PulsarContainerFactoryCustomizer等接口自定义容器工厂,还能对客户端并发等进行精细调控,如设置spring.pulsar.client.threads.iospring.pulsar.client.threads.listener,使 Pulsar 在应用中集成更灵活强大。
  • Couchbase 身份验证多元化:除基本用户名密码方式,新增客户端证书认证,满足更高安全需求场景,为数据安全保驾护航。
  • FreeMarker 变量自定义:能通过FreeMarkerVariablesCustomizer bean 灵活定制自动配置的 FreeMarker 的Configuration对象使用的变量,增强模板引擎的个性化适配能力。

三、测试与可观察性提升

  • 测试框架改进: - AssertJ 对 MockMvc 支持,自动配置MockMvcTester,以流畅 API 定义请求和断言,注入MockMvc处即可使用,优化测试代码编写体验。- 测试容器方面,支持org.testcontainers.kafka.KafkaContainer、Redis Stack 相关容器以及org.testcontainers.grafana.LgtmStackContainer等,拓宽测试覆盖范围。
  • 可观察性飞跃: - 应用程序分组功能,spring.application.group属性实现应用归类,在日志和 OpenTelemetry Resource中体现,方便管理与监控资源。- OTLP 功能拓展,支持 gRPC 传输发送跨度,management.otlp.logs下属性助力日志导出配置,ProcessInfoContributor展示内存信息并新增跟踪导出控制属性,全方位提升可观察性数据管理的精细度。

四、Actuator 功能升级

  • 可插拔暴露器:可扩展 Spring Boot 以灵活方式暴露 Actuator 端点,借助EndpointExposureOutcomeContributor接口实现,便于与不同平台集成,如类似 Cloud Foundry 支持的拓展。
  • SSL 信息与健康检查/actuator/info下新增 SSL 信息端点,展示有效期等内容并可预警证书过期,同时新增健康检查监控 SSL 证书状态,保障通信安全。
  • 任务端点信息丰富/actuator/scheduledtasks端点公开更多元数据,如下次计划执行时间和上次执行详情,便于深入了解任务执行状况。

从Spring Boot 3.3升级

RestClient和RestTemplate

已添加对自动配置

RestClient

RestTemplate

以使用Reactor Netty的

HttpClient

或JDK的

HttpClient

的支持。按照优先顺序,现在支持的客户端如下:

  1. Apache HTTP Components(HttpComponentsClientHttpRequestFactory
  2. Jetty Client(JettyClientHttpRequestFactory
  3. Reactor Netty HttpClientReactorClientHttpRequestFactory
  4. JDK HttpClientJdkClientHttpRequestFactory
  5. 简单JDK HttpURLConnectionSimpleClientHttpRequestFactory

值得注意的是,如果类路径上没有HTTP客户端库,这可能会导致使用

JdkClientHttpRequestFactory

,而以前会使用

SimpleClientHttpRequestFactory

。可以通过设置

spring.http.client.factory

选择特定的客户端。支持的值为

http-components

jetty

reactor

jdk

simple

所有五个客户端默认都会跟随重定向。要禁用此行为,请将

spring.http.client.redirects

设置为

dont-follow

Apache HTTP Components和Envoy

Apache HTTP Components在与HTTP/1.1 TLS升级相关的

HttpClient

中更改了默认值。大多数代理服务器可以毫无问题地处理升级,但是,您可能会在使用Envoy或Istio时遇到问题。

如果需要恢复以前的行为,可以使用新的

ClientHttpRequestFactoryBuilder

。定义一个

HttpComponentsClientHttpRequestFactoryBuilder

并应用以下自定义:

@BeanpublicHttpComponentsClientHttpRequestFactoryBuilderhttpComponentsClientHttpRequestFactoryBuilder(){returnClientHttpRequestFactoryBuilder.httpComponents().withDefaultRequestConfigManagerCustomizer((builder)-> builder.setProtocolUpgradeEnabled(false));}

配置属性的Bean验证

以前,当使用Hibernate Validator等Bean验证实现验证带有

@Validated

注释的

@ConfigurationProperties

类时,无论是否使用

@Valid

,都会在绑定嵌套属性时执行验证。在Spring Boot 3.4中,验证现在遵循Bean验证规范的行为。验证从带有

@ConfigurationProperties

注释的类开始,并且仅在相应字段带有

@Valid

注释时才级联到嵌套属性。

升级时,请检查带有Bean验证约束的

@ConfigurationProperties

类。在需要验证级联到嵌套属性的地方添加

@Valid

基于Bean的条件

@Bean

方法上使用

@ConditionalOnBean

@ConditionalOnMissingBean

并且设置了

annotation

属性时,其行为已更改。和以前一样,这两个条件都将使用

@Bean

方法的返回类型作为要匹配的类型的默认值。以前,如果设置了

name

type

value

,则不使用此默认值。从Spring Boot 3.4开始,如果设置了

annotation

,也不会使用此默认值。要恢复以前的行为,请同时指定

value

(即

@Bean

方法的返回类型)和

annotation

优雅停机

嵌入式Web服务器(Jetty、Reactor Netty、Tomcat或Undertow)的优雅停机现在默认启用。如果需要恢复以前的行为,请将

server.shutdown

设置为

immediate

用于构建OCI镜像的Paketo tiny Builder

使用Maven

spring-boot:build-image

目标或Gradle

bootBuildImage

任务为JVM应用程序构建OCI镜像时,默认使用的Cloud Native Buildpacks构建器已从

paketobuildpacks/builder-jammy-base

更改为

paketobuildpacks/builder-jammy-java-tiny

。这应该会生成更小的镜像。

tiny

构建器不包括外壳,因此对于需要启动脚本来运行应用程序的应用程序可能不起作用。有关自定义构建器的信息,请参阅Maven或Gradle文档。

带有Testcontainers的动态属性

通过注入

DynamicPropertyRegistry

定义动态属性的支持已被弃用,并且现在默认情况下尝试这样做会失败。不要注入

DynamicPropertyRegistry

,而是实现一个单独的返回

DynamicPropertyRegistrar

@Bean

方法。这个单独的bean方法应该注入将从中获取属性值的容器。这解决了一些容器生命周期问题,并确保在使用属性之前,从中获取属性值的容器已经启动。

如果希望继续注入

DynamicPropertyRegistry

(冒着遇到上述生命周期问题的风险),请将

spring.testcontainers.dynamic-property-registry-injection

设置为

warn

allow

。前者将记录警告,同时允许使用注入的

DynamicPropertyRegistry

。后者将默默地允许使用注入的

DynamicPropertyRegistry

,完全恢复Spring Boot 3.3的行为。

@AutoConfigureTestDatabase

与容器

@AutoConfigureTestDatabase

注释现在尝试检测数据库是否来自容器。如果要将该注释与容器数据库一起使用,这应该消除添加

replace=Replace.NONE

的需要。

如果需要恢复旧行为,请在注释上设置

replace=Replace.AUTO_CONFIGURED

控制对Actuator端点的访问

启用和禁用端点的支持已被重新设计,用更细粒度的访问模型取代了之前提供的开/关支持。新模型除了支持禁用端点(访问权限为

none

)和完全启用端点(访问权限为

unrestricted

)之外,还支持仅允许对端点操作进行

read-only

访问。

以下属性已被弃用:

  • management.endpoints.enabled-by-default
  • management.endpoint.<id>.enabled

它们的替代品是:

  • management.endpoints.access.default
  • management.endpoint.<id>.access

同样,

@Endpoint

上的

enableByDefault

属性已被弃用,新的

defaultAccess

属性取代了它。

作为这些更改的一部分,

enabled-by-default

现在始终如一地应用,并且与

@ConditionalOnEnabledEndpoint

的使用无关。如果在升级时失去对端点的访问权限,请将

management.endpoint.<id>.access

设置为

read-only

unrestricted

,或者将

management.endpoint.<id>.enabled

设置为

true

以使端点再次可访问。

此外,引入了一个新属性,允许操作员控制对Actuator端点的允许访问级别:

management.endpoints.access.max-permitted

此属性限制了可能为端点配置的任何访问权限。例如,如果

management.endpoints.access.max-permitted

设置为

read-only

,而

management.endpoint.loggers.access

设置为

unrestricted

,则仅允许对日志记录器端点进行只读访问。

Cloud Foundry条件端点暴露

@ConditionalOnAvailableEndpoint

一起使用的

EndpointExposure.CLOUD_FOUNDRY

枚举值已被弃用,取而代之的是

EndpointExposure.WEB

。典型的Spring Boot应用程序可能不会受到此更改的影响,但是,如果您有自定义的特定于Cloud Foundry的Actuator端点bean,则应更新条件以使用

EndpointExposure.WEB

HtmlUnit 4.3

HtmlUnit已升级到4.3。随着此次升级,依赖坐标从

net.sourceforge.htmlunit:htmlunit

更改为

org.htmlunit:htmlunit

,包名从

com.gargoylesoftware.htmlunit

更改为

org.htmlunit

。升级时,请相应地更新构建配置和导入。

Selenium HtmlUnit 4.22

Selenium HtmlUnit已更新到4.22。随着此次升级,依赖坐标从

org.seleniumhq.selenium:htmlunit-driver

更改为

org.seleniumhq.selenium:htmlunit3-driver

。升级时,请相应地更新构建配置。

WebJars定位器集成

为了加快启动时间并高效解析WebJars资产,您需要更新

pom.xml

/

build.gradle

以依赖

org.webjars:webjars-locator-lite

而不是

org.webjars:webjars-locator-core

(这两个依赖项均由Spring Boot管理)。请注意,Spring中对

org.webjars:webjars-locator-core

的支持现已弃用,并将在未来版本中删除。请参阅此功能的参考文档部分。

OkHttp依赖管理已移除

Spring Boot不再依赖OkHttp,因此不再管理其版本。如果您的应用程序有OkHttp依赖项,请更新其构建以使用满足其需求的OkHttp版本。

Netty在原生镜像中

Spring Boot 3.4使用的Netty版本尚未得到Native Build Tools中包含的GraalVM可达性元数据的支持。要使Netty在原生镜像中工作,您需要手动升级GraalVM可达性元数据版本。

对于Maven:

<plugin><groupId>org.graalvm.buildtools</groupId><artifactId>native-maven-plugin</artifactId><configuration><metadataRepository><version>0.3.14</version></metadataRepository></configuration></plugin>

对于Gradle:

graalvmNative {
    metadataRepository {
        version ='0.3.14'}}

Spring Boot 3.2中的弃用内容

在Spring Boot 3.2中被弃用并标记为在3.4中删除的类、方法和属性已在本版本中删除。在升级之前,请确保您没有调用弃用的方法。

最低要求更改

Gradle

Gradle 7.5、8.0、8.1、8.2和8.3不再受支持。现在需要Gradle 7.x(7.6.4或更高版本)或Gradle 8.x(8.4或更高版本)。

新特性和值得注意的地方

结构化日志记录

引入了对结构化日志记录的支持,内置支持Elastic Common Schema(

ecs

)、Graylog Extended Log Format(

gelf

)和Logstash(

logstash

)。要启用结构化文件日志记录,请将

logging.structured.format.file

设置为

ecs

gelf

logstash

。类似地,要启用结构化控制台日志记录,请设置

logging.structured.format.console

要了解有关Spring Boot对结构化日志记录的支持,包括如何定义自定义格式,请参阅参考文档。

@Fallback

Beans

@ConditionalOnSingleCandidate

现在支持

@Fallback

beans。如果有单个主bean,或者如果没有主bean但有单个非回退bean,则条件将匹配。

定义其他Beans

在类型匹配时,基于bean的条件现在将忽略任何不是默认候选者的bean。通过声明一个bean不是默认候选者(使用

@Bean(defaultCandidate=false)

),现在可以定义一个自动配置类型的bean,而不会导致相同类型的自动配置bean退出。这减少了在同一应用程序中使用两个

DataSource

bean或两个

EntityManagerFactory

bean等所需的配置。

ClientHttpRequestFactory构建器

添加了一个新的

ClientHttpRequestFactoryBuilder

接口,允许您为特定技术构建

ClientHttpRequestFactory

实例。构建器允许对底层组件进行细粒度的自定义,以及一种一致的方式来应用常见设置。

可以使用接口的静态工厂方法为特定库创建以下构建器:

  • Apache HTTP Components(ClientHttpRequestFactoryBuilder.httpComponents()
  • Jetty Client(ClientHttpRequestFactoryBuilder.jetty()
  • Reactor Netty HttpClientClientHttpRequestFactoryBuilder.reactor()
  • JDK HttpClientClientHttpRequestFactoryBuilder.jdk()
  • 简单JDK HttpURLConnectionClientHttpRequestFactoryBuilder.simple()

有关更多详细信息,包括如何使用配置属性应用常见设置,请参阅更新的参考文档。

可观察性改进

应用程序组

新的

spring.application.group

属性可用于将应用程序分组在一起,例如,如果它们都属于某个业务单元或一个更大的应用程序安排。设置此属性时,它也会包含在日志消息中。此行为可以使用属性

logging.include-application.group

进行控制。应用程序组也会自动添加到OpenTelemetry

Resource

中。

OTLP

现在可以通过gRPC传输发送OTLP跨度。为此,请将新的配置属性

management.otlp.tracing.transport

设置为

grpc

。此属性默认为

http

。也为此添加了服务连接支持。

management.otlp.logs

下的新属性可用于自动配置OpenTelemetry的

OtlpHttpLogRecordExporter

SdkLoggerProvider

其他可观察性更新
ProcessInfoContributor

现在还显示有关堆和非堆使用情况的内存信息。

新的

management.otlp.tracing.export.enabled

management.wavefront.tracing.export.enabled

management.zipkin.tracing.export.enabled

属性现在可以更精细地启用或禁用跟踪导出。

AssertJ对MockMvc的支持

当AssertJ在类路径上时,提供对

MockMvcTester

的自动配置。

MockMvcTester

允许您使用流畅的API定义请求和断言。它可以注入到任何有

MockMvc

的地方。

有关更多详细信息,请参阅Spring Framework参考文档的专用部分。

Spring Pulsar

现在提供了用于配置默认租户和命名空间的配置属性。当使用不完全限定的主题URL消费或生产消息时,将应用默认值。使用

spring.pulsar.defaults.topic.tenant

spring.pulsar.defaults.topic.namespace

配置属性进行配置,或者定义自己的

PulsarTopicBuilder

bean。设置

spring.pulsar.defaults.topic.enabled=false

可禁用默认值。

添加了一个新的

PulsarContainerFactoryCustomizer

接口,以支持对自动配置的

PulsarContainerFactory

进行自定义。

spring.pulsar.consumer.subscription.name

配置属性现在适用于自动配置的Pulsar监听器容器。

引入了两个新的配置属性,用于配置Pulsar客户端的并发:

  • spring.pulsar.client.threads.io控制用于处理与代理的连接的线程数。
  • spring.pulsar.client.threads.listener控制用于消息监听器的线程数。

最后,新的

spring.pulsar.listener.concurrency

属性可用于控制自动配置的Pulsar消息监听器容器的并发。

Couchbase身份验证

现在可以使用客户端证书对Couchbase集群进行身份验证,作为基本用户名和密码身份验证的替代方法。有关更多详细信息,请参阅参考文档。

FreeMarker

现在可以自定义自动配置的FreeMarker的

Configuration

对象使用的FreeMarker变量。为此,定义一个或多个类型为

FreeMarkerVariablesCustomizer

的bean。这些bean将按照定义的顺序(如果有)被调用。

带有ActiveMQ Classic的嵌入式代理支持

由于ActiveMQ Classic现在再次支持嵌入式代理,自动配置已更新以支持它。

请注意,与Spring Boot 2.7.x相反,ActiveMQ启动器仅为客户端。要使用嵌入式代理,应将

org.apache.activemq:activemq-broker

添加到您的应用程序中。

配置元数据

注释处理器现在可以检测

Enum

的默认值。如果您添加了手动元数据来提供自定义属性的值,请确保将其删除。

弃用和替换自动配置类

为了更轻松地演进自动配置,引入了对弃用和替换自动配置类的支持。可以在新的

META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.replacements

文件中声明替换。要了解更多信息,请参阅参考文档。

虚拟线程

如果启用了虚拟线程,以下组件现在将使用它们:

  • OtlpMeterRegistry
  • Undertow Web服务器

镜像构建改进

Spring Boot现在默认使用

paketobuildpacks/builder-jammy-java-tiny

。此构建器开箱即支持ARM和x64平台。

在用于构建OCI镜像的Maven和Gradle插件中添加了一个

trustBuilder

选项。此选项控制如何调用CNB生命周期,在使用来自不可信源的构建器时提供更高的安全性。默认情况下,来自Paketo项目、Heroku和Google的构建器是受信任的。有关信息,请参阅Maven或Gradle文档。

在用于构建OCI镜像的Maven和Gradle插件中添加了一个

imagePlatform

选项。此选项可用于指定为运行CNB构建包而拉取的任何CNB构建器、运行时和构建包镜像的操作系统和架构。当主机平台支持模拟其他操作系统/架构时(例如,在使用Apple硅芯片的Mac上使用Rosetta模拟ARM主机上的AMD架构),可以使用此选项为与主机平台不同的操作系统和架构构建镜像。有关更多信息,请参阅Maven或Gradle文档。

Docker Compose改进

  • 多配置文件支持:Docker Compose现在支持多个Docker Compose配置文件。
  • 命令行参数改进: - 新增spring.docker.compose.start.argumentsspring.docker.compose.stop.arguments属性,可用于指定启动和停止服务时传递给Docker Compose子命令的额外命令行参数。- 新增spring.docker.compose.arguments属性,用于向Docker Compose传递参数。

更新的支持

  • 支持Postgres的POSTGRES_HOST_AUTH_METHOD=trust环境变量。
  • 分别使用redis/redis-stackredis/redis-stack-server容器镜像,添加了对Redis Stack和Redis Stack Server的支持。
  • 使用grafana/otel-lgtm容器镜像,添加了对Grafana LGTM的支持。
  • 增加了对Hazelcast(使用HazelcastConnectionDetails)的支持。
  • 支持OTLP日志记录。

测试容器改进

  • 支持org.testcontainers.kafka.KafkaContainer
  • 分别使用redis/redis-stackredis/redis-stack-server容器镜像,添加了对Redis Stack和Redis Stack Server的支持。
  • 支持org.testcontainers.grafana.LgtmStackContainer
  • 支持Hazelcast(使用HazelcastConnectionDetails)。
  • 支持OTLP日志记录。
  • 支持RedisContainer

Actuator

可插拔的Actuator暴露器

现在可以扩展Spring Boot,以可插拔的方式暴露Actuator端点。可以实现新的

EndpointExposureOutcomeContributor

接口来影响

@ConditionalOnAvailableEndpoint

条件。此扩展应使其更容易提供与现有Cloud Foundry支持类似的其他平台集成。

SSL信息和健康检查

如果使用SSL捆绑包,现在在

/actuator/info

下有一个新的端点显示SSL信息(有效期、颁发者、主题等)。此端点还会显示即将过期的证书,以提醒您需要尽快轮换它们。有一个新的配置属性

management.health.ssl.certificate-validity-warning-threshold

可用于配置阈值。还添加了一个新的健康检查来监控SSL证书。如果证书无效,它将状态设置为

OUT_OF_SERVICE

/actuator/scheduledtasks

端点的额外信息

/scheduledtasks

Actuator端点现在公开有关计划任务的额外元数据,例如“下一次计划执行时间”和“上次执行时间、状态和异常”。

依赖升级

Spring Boot 3.4迁移到了多个Spring项目的新版本:

  • Spring AMQP 3.2
  • Spring Authorization Server 1.4
  • Spring Batch 5.2
  • Spring Data 2024.1
  • Spring Framework 6.2
  • Spring HATEOAS 2.4
  • Spring Integration 6.4
  • Spring Kafka 3.3
  • Spring Pulsar 1.2
  • Spring Security 6.4
  • Spring Session 3.4

众多第三方依赖也已更新,其中一些更值得注意的如下:

  • Apache Http Client 5.4
  • AssertJ 3.26
  • Artemis 2.37
  • Elasticsearch Client 8.15
  • Flyway 10.20
  • Gson 2.11
  • Hibernate 6.6
  • HtmlUnit 4.5.0
  • JUnit Jupiter 5.11
  • Jackson 2.18.0
  • Jedis 5.2
  • Kafka 3.8
  • Lettuce 6.4
  • Liquibase 4.29
  • Log4j 2.24
  • HtmlUnit 4.3
  • MariaDB 3.4
  • Micrometer 1.14
  • Micrometer Tracing 1.4
  • Mockito 5.13
  • MongoDB 5.2.0
  • MySQL 9.1
  • OpenTelemetry 1.41
  • Oracle Database 23.4
  • R2DBC MySQL 1.3
  • Rabbit AMQP Client 5.22
  • Rabbit Stream Client 0.18.0
  • Reactor 2024.0
  • Selenium 4.25
  • Testcontainers 1.20.3
  • XMLUnit 2.10

杂项

除了上述更改之外,还有许多小的调整和改进,包括:

  • 现在可以使用Customizer<Liquibase> bean在Liquibase使用之前对其进行自定义。
  • 用于创建JCache CacheManager的属性现在可以通过定义JCachePropertiesCustomizer bean进行自定义。
  • Spring MVC使用的RequestToViewNameTranslator现在可以通过定义名为viewNameTranslator的bean进行自定义。
  • Lettuce的ClientOptions现在可以使用LettuceClientOptionsBuilderCustomizer bean进行自定义。要对整个LettuceClientConfiguration进行更广泛的配置,请继续使用LettuceClientConfigurationBuilderCustomizer
  • 新的自定义器ProxyConnectionFactoryCustomizer可用于自定义R2DBC ProxyConnectionFactory
  • 如果发生Spring Security注销,现在会发布一个审计事件。
  • JavaMailSender上的TLS现在可以使用新的属性spring.mail.ssl.*通过SSL捆绑包进行配置。
  • GSON的严格性现在可以使用新的spring.gson.strictness属性进行配置。
  • @Name现在可以用于JavaBean风格的配置属性的字段上,以自定义其名称。
  • 当从另一个DataSource派生时,如果源DataSource不公开驱动程序类名,DataSourceBuilder现在可以使用源DataSource的URL确定驱动程序类名。
  • 在Cloud Foundry平台上,现在自动启用活跃度和就绪度健康探测。
  • 新的属性spring.application.version可用于读取和设置应用程序版本。该属性的默认值取自清单的Implementation-Version
  • 自动配置的EntityManagerFactoryBuilder也定义了原生(例如Hibernate)属性。
  • Spring Integration的TaskScheduler现在即使没有使用@EnableScheduling也能感知虚拟线程。
  • @ConditionalOnAvailableEndpoint现在有一个value别名用于endpoint
  • 添加了一个新的配置属性spring.data.web.pageable.serialization-mode,用于配置Spring Data Web的序列化模式。
  • 当使用SpringApplication.from(…​)语法时,现在可以指定要激活的其他配置文件。
  • Spring Boot插件不再在构建包环境中设置BP_NATIVE_IMAGE: true
  • 注册的@ConfigurationProperties bean现在尊重@DependsOn@Description@Fallback@Lazy@Primary@Scope@Role注释。
  • Log4j2的MultiFormatStringBuilderFormattable现在在结构化日志记录中受支持。
  • 添加了一个新的配置属性spring.jms.listener.max-messages-per-task,用于配置监听器在一个任务中处理的最大消息数。
  • 默认安全配置现在公开映射到其他路径的健康组。此外,两个EndpointRequest类现在都提供toAdditionalPaths(…​)方法。
  • 会话cookie的分区属性现在可以通过属性设置。
  • 添加了一个新的server.jetty.max-form-keys属性,用于自定义Jetty的最大表单键数。
  • 添加了新的属性management.otlp.logging.connect-timeoutmanagement.otlp.tracing.connect-timeout,用于配置到OTLP收集器的连接超时。
  • 当通过OTLP发送日志时,添加了对gRPC传输的支持。
  • 当绑定构建过程中构建包使用的容器中的目录时,现在会显示警告。
  • 当使用--enable-sbom=sbom构建原生镜像时,现在会自动检测此SBOM。
  • DatabaseDriver枚举现在支持ClickHouse JDBC驱动程序。
  • 新的属性management.logging.export.enabledmanagement.otlp.logging.export.enabled可用于禁用日志导出。
  • Spring Batch使用的TaskExecutor现在可以通过定义一个带有@BatchTaskExectuor注释的TaskExecutor bean进行自定义。
  • Spring Session自动配置现在在反应式Web应用程序中支持indexed存储库类型。
  • 如果未配置池暂停且创建了检查点,HikariCheckpointRestoreLifecycle将记录警告。

Spring Boot 3.4中的弃用内容

  • spring.gson.lenient,改用spring.gson.strictness
  • @MockBean@SpyBean,分别改用Spring Framework的@MockitoBeanMockitoSpyBean
  • org.springframework.boot.ResourceBanner#getApplicationVersion(Class<?>),改用spring.application.version属性。
  • org.springframework.boot.SpringApplication#logStartupInfo(boolean),改用org.springframework.boot.SpringApplication#logStartupInfo(ConfigurationApplicationContext)
  • org.springframework.boot.logging.logback.ApplicationNameConverter,改用org.springframework.boot.logging.logback.EnclosedInSquareBracketsConverter
  • org.springframework.boot.actuate.autoconfigure.endpoint.expose.EndpointExposure#CLOUD_FOUNDRY,改用org.springframework.boot.actuate.autoconfigure.endpoint.expose.EndpointExposure#WEB
  • org.springframework.boot.actuate.autoconfigure.tracing.otlp.OtlpTracingConnectionDetails#getUrl(),改用getUrl(Transport)
  • org.springframework.boot.actuate.autoconfigure.tracing.OpenTelemetryAutoConfiguration,改用org.springframework.boot.actuate.autoconfigure.tracing.OpenTelemetryTracingAutoConfiguration
  • OtlpAutoConfiguration,改用OtlpTracingAutoConfiguration
  • management.endpoints.enabled-by-defaultmanagement.endpoint.<id>.enabled,分别改用management.endpoints.access.defaultmanagement.endpoint.<id>.access
  • @Endpoint上的enableByDefault,改用defaultAccess
标签: spring boot 后端 java

本文转载自: https://blog.csdn.net/lilinhai548/article/details/143976767
版权归原作者 月下独码 所有, 如有侵权,请联系我们删除。

“Spring Boot 3.4.0 发行:革新与突破的里程碑”的评论:

还没有评论