:version: 3.2.0-M3
:reference-docs: https://docs.spring.io/spring-boot/docs/{version}/reference/html/
:gradle-plugin-docs: https://docs.spring.io/spring-boot/docs/{version}/gradle-plugin/reference/htmlsingle
:maven-plugin-docs: https://docs.spring.io/spring-boot/docs/{version}/maven-plugin/reference/htmlsingle

= Spring Boot 3.2.0-M3 Release Notes

For changes in earlier milestones, please refer to:

- link:Spring-Boot-3.2.0-M2-Release-Notes[v3.2.0-M2]



== Upgrading from Spring Boot 3.1

=== Jetty 12
Spring Boot now supports Jetty 12. Jetty 12 supports the Servlet 6.0 API, aligning it with both Tomcat and Undertow. Previously, if you were using Jetty with Spring Boot 3.x, the Servlet API had to be downgraded to 5.0. This is no longer necessary. Remove any override of the Servlet API version when upgrading.



=== H2 2.2
Spring Boot now uses H2 2.2 by default.
To continue using a database from earlier version of H2 it may be necessary to perform a data migration.
Before upgrading, export the database using the `SCRIPT` command.
Create an empty database with the new version of H2 and then import the data using the `RUNSCRIPT` command.



=== Minimum Requirements Changes
None.


== New and Noteworthy
TIP: Check link:Spring-Boot-3.2.0-M3-Configuration-Changelog[the configuration changelog] for a complete overview of the changes in configuration.



=== Spring for Apache Pulsar Support
Spring Boot now includes auto-configuration support and starter POMs for the https://github.com/spring-projects/spring-pulsar[Spring for Apache Pulsar project].
See the {reference-docs}messaging.html#messaging.pulsar[updated reference documentation] for full details.



=== Broader Exemplar Support in Micrometer 1.12
Micrometer 1.12 includes a feature to https://github.com/micrometer-metrics/micrometer/pull/3996[broaden the exemplar support] that
https://github.com/prometheus/prometheus/pull/11984[requires Prometheus 2.43 or later]. If you're using a Prometheus version older than 2.43.0 and you're using Micrometer Tracing, please upgrade to Prometheus >= 2.43.0, otherwise metrics won't show up anymore.



=== Virtual Host Support for RabbitMQ Stream
Virtual host support for RabbitMQ Stream has been added. The virtual host for RabbitMQ Stream automatically uses the configured virtual host for RabbitMQ if not set explicitly. To use a specific virtual host for RabbitMQ Stream, set `spring.rabbitmq.stream.virtual-host`.



=== Docker Compose Support for Neo4j
Spring Boot's Docker Compose integration now supports Neo4j.
You must configure the `NEO4J_AUTH` environment variable in your compose YAML to disable authentication (a value of `none`) or to set a password for the `neo4j` user (a value of `neo4j/your-password`).


=== Virtual threads

Spring Data Redis' `ClusterCommandExecutor` will now use virtual threads if enabled.



=== Docker Image Building

==== Build Workspace Configuration
The temporary build workspace used by CNB builders and buildpacks can now be configured to use a bind mount or a custom named volumes. 
See the {maven-plugin-docs}/#build-image.examples.caches[Maven] and {gradle-plugin-docs}/#build-image.examples.caches[Gradle] documentation for more information and examples. 

==== Security Options Configuration
Security options that are applied to the CNB builder container can now be customized to support Docker environments that do now allow the default Linux security option `label=disable` to be used.
See the {maven-plugin-docs}/#build-image.customization[Maven] and {gradle-plugin-docs}/#build-image.customization[Gradle] documentation for more information. 


=== Dependency Upgrades
Spring Boot 3.2.0-M3 moves to new versions of several Spring projects:

* Spring AMQP 3.1.0
* Spring Authorization Server 1.2.0-M1
* Spring Batch 5.1.0-M3
* Spring Data Bom 2023.1.0-M3
* Spring Framework 6.1.0-RC1
* Spring GraphQL 1.2.3
* Spring Integration 6.2.0-M3
* Spring Kafka 3.1.0-M1
* Spring LDAP 3.2.0
* Spring Pulsar 1.0.0-M2
* Spring Retry 2.0.3
* Spring Security 6.2.0
* Spring WS 4.0.6

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

* Elasticsearch Client 8.10.1
* Flyway 9.22.1
* GraphQL Java 21.1
* Hibernate 6.3.1.Final
* MariaDB 3.2.0
* Micrometer 1.12.0-M3
* Micrometer Tracing 1.2.0-M3
* SnakeYAML 2.2



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

* Logging has been reduced when the handler for the welcome page receives an invalid `Accept` header, falling back to accepting all MIME types.
* Dependency management for Kotlin Serialization is now provided.
* The auto-configured `JdbcClient` bean is now available in tests using `@JdbcTest` and `@DataJpaTest`.
* `RestClientBuilderConfigurer`, that can be used to apply Spring Boot's defaults to a `RestClient.Builder`, has been added.
* `spring.application.name` is now used for OpenTelemetry's `service.name` if no `service.name` has been set explicitly.
* The new property `spring.servlet.multipart.strict-servlet-compliance` sets whether multipart handling is only used for `multipart/form-data` requests.
* There's now connection details support for OTLP metrics and traces. A connection details bean is automatically created if using Testcontainers or Docker Compose with the `otel/opentelemetry-collector-contrib` image.
