:version: 3.3.0-M2
:reference-docs: https://docs.spring.io/spring-boot/docs/{version}/reference/htmlsingle/
: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.3.0-M2 Release Notes

For changes in earlier milestones, please refer to:

- link:Spring-Boot-3.3.0-M1-Release-Notes[v3.3.0-M1]



== Upgrading from Spring Boot 3.2



=== Jersey Observability
Micrometer 1.13 has deprecated its Jersey support in favor of Jersey's `jersey-micrometer` module.
If you application uses Jersey metrics, add a dependency on `org.glassfish.jersey.ext:jersey-micrometer` when upgrading.

To support observations with Jersey, the `MetricsApplicationEventListener` has been replaced with a `ObservationApplicationEventListener`.
If you were using a `JerseyTagsProvider` to customize the tags, you'll now need to implement a `JerseyObservationConvention` bean to do that. 



=== Minimum Requirements Changes



==== Native Build Tools
If you're using the Native Build Tools to build your project with GraalVM, make sure you're using at least version 0.10.0 of the plugin.
Maven users should get the correct version automatically when using the Spring Boot parent.

Gradle users should update the plugin version in the `plugins` block:

[source,groovy]
----
plugins {
  // ...
  id 'org.graalvm.buildtools.native' version '0.10.0'
  // ...
}
----

See https://github.com/spring-projects/spring-boot/issues/39068[#39068] for details.




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



=== Service Connections

==== Support for Apache ActiveMQ Artemis
Service connection support for Apache ActiveMQ Artemis has been added.
The Testcontainers support works with the `ArtemisContainer` container, the Docker Compose support works with the `apache/activemq-artemis` image.

==== Support for the official ActiveMQ Classic images
The ActiveMQ service connection now supports the `apache/activemq-classic` docker image and the `ActiveMQContainer` testcontainer.

==== Support for LDAP
Service connection support for LDAP with the `osixia/openldap` container has been added

==== Bitnami Container Images
The Spring Boot support for Docker Compose will detect and configure containers from https://bitnami.com/[Bitnami] in addition to official images for several of the supported technologies, including Cassandra, Elasticsearch, MariaDB, MySQL, MongoDB, Neo4j, PostgreSQL, RabbitMQ, and Redis. See the {reference-docs}#features.docker-compose[updated reference documentation] for more information.

=== Observability

==== Spring Pulsar
The properties `spring.pulsar.listener.observation-enabled` and `spring.pulsar.template.observations-enabled` changed their default value from `true` to `false`. This has been done to unify the `observation-enabled` properties, all of which now default to `false`. If you were relying on Pulsar observations and didn't enable them explicitly, add the properties `spring.pulsar.listener.observation-enabled=true` and `spring.pulsar.template.observations-enabled=true` to your configuration to restore the old behavior.



==== Brave and Zipkin
Brave has been updated to 6.0, and Zipkin to 3.0. With that upgrade, the Zipkin support in Spring Boot got new features, like specifying the encoding in which data is reported to the Zipkin API. See https://github.com/spring-projects/spring-boot/pull/39049[#39049] for details.

A new JDK `HttpClient` based Zipkin sender has been implemented. This sender only depends on the JDK and will be the default sender in Spring Boot 3.5.0, superseding the `WebClient` and `RestTemplate` sender implementations.


=== Virtual Threads

If a `AsyncTaskExecutor` is available in the context, it is now registered on the websocket `ChannelRegistration`.
If using virtual threads, this will usually be a virtual threads enabled `SimpleAsyncTaskExecutor`, making Websockets virtual thread capable.


=== Batch Transaction Manager
A `@BatchTransactionManager` annotation has been introduced to make it easier to configure Spring Batch to use a custom transaction manager. 
See the {reference-docs}#howto.batch.specifying-a-transaction-manager[updated documentation] for more information. 

=== Dependency Upgrades
Spring Boot 3.3.0-M2 moves to new versions of several Spring projects:

* https://github.com/spring-projects/spring-amqp/releases/tag/v3.1.2[Spring AMQP 3.1.2]
* https://github.com/spring-projects/spring-authorization-server/releases/tag/1.3.0-M2[Spring Authorization Server 1.3.0-M2]
* https://github.com/spring-projects/spring-batch/releases/tag/v5.1.1[Spring Batch 5.1.1]
* https://github.com/spring-projects/spring-data-bom/releases/tag/2023.1.3[Spring Data Bom 2023.1.3]
* https://github.com/spring-projects/spring-framework/releases/tag/v6.1.4[Spring Framework 6.1.4]
* https://github.com/spring-projects/spring-graphql/releases/tag/v1.3.0-M1[Spring GraphQL 1.3.0-M1]
* https://github.com/spring-projects/spring-integration/releases/tag/v6.3.0-M1[Spring Integration 6.3.0-M1]
* https://github.com/spring-projects/spring-kafka/releases/tag/v3.2.0-M1[Spring Kafka 3.2.0-M1]
* https://github.com/spring-projects/spring-ldap/releases/tag/3.2.2[Spring LDAP 3.2.2]
* https://github.com/spring-projects/spring-pulsar/releases/tag/v1.1.0-M1[Spring Pulsar 1.1.0-M1]
* https://github.com/spring-projects/spring-security/releases/tag/6.3.0-M2[Spring Security 6.3.0-M2]
* https://github.com/spring-projects/spring-session/releases/tag/3.3.0-M2[Spring Session 3.3.0-M2]

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

* https://hibernate.org/orm/releases/6.4/[Hibernate 6.4.4.Final]
* https://github.com/apache/httpcomponents-client/blob/master/RELEASE_NOTES.txt[HttpClient5 5.3.1]
* https://github.com/jetty/jetty.project/releases/tag/jetty-12.0.6[Jetty 12.0.6]
* https://mariadb.com/kb/en/mariadb-connector-j-3-3-3-release-notes/[MariaDB 3.3.3]
* https://github.com/micrometer-metrics/micrometer/releases/tag/v1.13.0-M1[Micrometer 1.13.0-M1]
* https://github.com/micrometer-metrics/tracing/releases/tag/v1.3.0-M1[Micrometer Tracing 1.3.0-M1]
* https://netty.io/news/2024/02/13/4-1-107-Final.html[Netty 4.1.107.Final]
* https://www.postgresql.org/about/news/postgresql-jdbc-4272-4261-4255-4244-4239-42228-and-42228jre7-security-update-for-cve-2024-1597-2812/[Postgresql 42.7.2]
* https://github.com/reactor/reactor/releases/tag/2023.0.3[Reactor Bom 2023.0.3]
* https://github.com/testcontainers/testcontainers-java/releases/tag/1.19.6[Testcontainers 1.19.6]
* https://tomcat.apache.org/tomcat-10.1-doc/changelog.html[Tomcat 10.1.19]

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

* The new reactive `sessions` actuator endpoint can now return sessions for a given username.
* The environment's default profiles are now included in the env actuator endpoint's response.
* Added the new property `spring.liquibase.ui-service` to specify the default UI service logger used by Liquibase.
* Added the new property `spring.security.saml2.relyingparty.registration.*.name-id-format` to specify the NameID format of a SAML registration.
* Added the new property `server.mime-mappings` which allows to configure custom MIME type mappings.

== Deprecations in Spring Boot 3.3.0-M2

* `ZipkinRestTemplateBuilderCustomizer` and `ZipkinWebClientBuilderCustomizer` in favor of the new `ZipkinHttpClientBuilderCustomizer`.

None.
