Skip to content

Spring Boot 3.4.0 M3 Release Notes

Phil Webb edited this page Sep 19, 2024 · 24 revisions

Spring Boot 3.4.0-M3 Release Notes

For changes in earlier milestones, please refer to:

Upgrading from Spring Boot 3.3

Minimum Requirements Changes

None.

@AutoConfigureTestDatabase with Containers

The @AutoConfigureTestDatabase annotation now attempts to detect if a database has been sourced from a container. This should remove the need to add replace=Replace.NONE if you want to use the annotation with container databases.

If you need to revert to the old behavior, set replace=Replace.AUTO_CONFIGURED on the annotation.

Graceful Shutdown

Graceful shutdown of the embedded web server (Jetty, Rector Netty, Tomcat, or Undertow) is now enabled by default. If you need to restore the previous behavior, set server.shutdown to immediate.

New and Noteworthy

Tip
Check the configuration changelog for a complete overview of the changes in configuration.

Embedded Broker support with ActiveMQ Classic

Now that ActiveMQ Classic supports an embedded broker again, the auto-configuration has been updated to support it.

Note that contrary to Spring Boot 2.7.x, the ActiveMQ starter is client only. To use the embedded broker, org.apache.activemq:activemq-broker should be added to your application.

Spring for Apache Pulsar

A new PulsarContainerFactoryCustomizer interface has been added to support customization of the auto-configured PulsarContainerFactory.

The spring.pulsar.consumer.subscription.name configuration property now applies to the auto-configured Pulsar listener container.

Two new configuration properties for configuring the Pulsar client’s concurrency have been introduced: - spring.pulsar.client.threads.io controls the number of threads to be used for handling connections to brokers. - spring.pulsar.client.threads.listener controls the number of threads to be used for message listeners.

Lastly, the new spring.pulsar.listener.concurrency property can be used to control the concurrency of the auto-configured Pulsar message listener container.

Observability

It’s now possible to send OTLP spans over the gRPC transport. For this, set the new configuration property management.otlp.tracing.transport to grpc. This property defaults to http. Service connection support for this has been added, too.

Docker Compose and Testcontainers support has been added for OTLP logging.

Structured logging now supports Graylog Extended Log Format (GELF).

Deprecating and Replacing Auto-configuration Classes

To make it easier to evolve auto-configuration, support for deprecating and replacing auto-configuration classes has been introduced. Replacements can be declared in a new META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.replacements file. To learn more, please refer to the reference documentation.

Dependency Upgrades

Spring Boot 3.4.0-M3 moves to new versions of several Spring projects:

  • Spring AMQP 3.2.0-M3

  • Spring Authorization Server 1.4.0-M2

  • Spring Batch 5.2.0-M1

  • Spring Data 2024.1.0-M1

  • Spring Framework 6.2.0-RC1

  • Spring HATEOAS 2.4.0-RC1

  • Spring Kafka 3.3.0-M3

  • Spring Integration 6.4.0-M3

  • Spring Pulsar 1.2.0-M2

  • Spring Security 6.4.0-M4

Numerous third-party dependencies have also been updated, some of the more noteworthy of which are the following:

  • Artemis 2.37

  • Elasticsearch Client 8.15

  • Jedis 5.1

  • Flyway 10.18

  • Lettuce 6.4

  • Log4j 2.24

  • Micrometer 1.14.0-M3

  • Micrometer Tracing 1.4.0-M3

  • Mockito 5.13

  • OpenTelemetry 1.42

  • R2DBC MySQL 1.3

  • Rabbit AMQP Client 5.22

  • Reactor 2024.0.0-M6

  • Selenium 4.24

Miscellaneous

Apart from the changes listed above, there have also been lots of minor tweaks and improvements including:

  • A new configuration property, spring.data.web.pageable.serialization-mode, for configuring Spring Data Web’s serialization mode has been added.

  • When using the SpringApplication.from(…​) syntax, it’s now possible to specify the additional profiles to activate.

  • The Spring Boot plugin no longer sets BP_NATIVE_IMAGE: true in the buildpack environment.

  • Registered @ConfigurationProperties beans now respect @DependsOn, @Description, @Fallback, @Lazy, @Primary, @Scope and @Role annotations.

  • Grafana LGTM support has been added to OtlpLoggingConnectionDetails for Testcontainer and Docker Compose

  • Log4j2’s MultiFormatStringBuilderFormattable is now supported in structured logging

  • Support for Testcontainer’s RedisContainer has been added

  • A new configuration property, spring.jms.listener.max-messages-per-task, for configuring the maximum number of messages a listener processes in one task has been added.

  • The default security configuration now exposes health groups mapped to additional paths. In addition, both EndpointRequest classes now offer toAdditionalPaths(…​) methods.

Deprecations in Spring Boot 3.4.0-M3

  • Deprecated org.springframework.boot.actuate.autoconfigure.tracing.otlp.OtlpTracingConnectionDetails#getUrl() in favor of getUrl(Transport)

  • Deprecated org.springframework.boot.actuate.autoconfigure.tracing.OpenTelemetryAutoConfiguration in favor of org.springframework.boot.actuate.autoconfigure.tracing.OpenTelemetryTracingAutoConfiguration

Clone this wiki locally