= Spring Boot 3.3.0-M1 Release Notes



== Upgrading from Spring Boot 3.2



=== Minimum Requirements Changes
None.



== Dependency Management for Dropwizard Metrics Removed
Dependency management for Dropwizard Metrics has been removed.
Spring Boot does not depend directly upon Dropwizard Metrics and, therefore, does not require a specific version.
If your application depends on Dropwizard Metrics directly, update your build configuration to specify a version that meets its needs.



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



=== Observability Improvements
Observations can now be enabled for the simple, direct and stream listener and on the `RabbitTemplate` via properties.

Support for the Micrometer `@SpanTag` annotation has been added.

Added support for tagged fields for both Brave and OpenTelemetry.
Support for local fields has been added for Brave.

Added a process `InfoContributor`, which can be enabled with `management.info.process.enabled=true`.

If no application name is explicitly set, `unknown_service` is now used for OpenTelemetry.
This aligns the Spring Boot default to the OpenTelemetry specification.



=== Apache Pulsar Improvements
There are now properties to configure cluster-level failover for Pulsar under the `spring.pulsar.client.failover` namespace.



=== Spring Security Improvements
A `JwtAuthenticationConverter` (or a `ReactiveJwtAuthenticationConverter`) is now auto-configured if one of the properties is set:

* `spring.security.oauth2.resourceserver.jwt.authority-prefix`
* `spring.security.oauth2.resourceserver.jwt.principal-claim-name`
* `spring.security.oauth2.resourceserver.jwt.authorities-claim-name`


=== Virtual threads
The Undertow web server is now using virtual threads, if enabled.



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

* https://github.com/spring-projects/spring-authorization-server/releases/tag/1.3.0-M1[Spring Authorization Server 1.3.0-M1]
* https://github.com/spring-projects/spring-security/releases/tag/6.3.0-M1[Spring Security 6.3.0-M1]
* https://github.com/spring-projects/spring-session/releases/tag/3.3.0-M1[Spring Session 3.3.0-M1]

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

* https://github.com/assertj/assertj/releases/tag/assertj-build-3.25.0[AssertJ 3.25]
* https://github.com/openzipkin/brave/releases/tag/5.17.0[Brave 5.17]
* HikariCP 5.1.0
* https://github.com/influxdata/influxdb-java/releases/tag/influxdb-java-2.24[InfluxDB Java 2.24]
* https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.16[Jackson 2.16]
* JMustache 1.16
* https://docs.liquibase.com/start/release-notes/liquibase-release-notes/liquibase-4.25.0.html[Liquibase 4.25]
* https://github.com/mockito/mockito/releases/tag/v5.9.0[Mockito 5.9]
* https://dev.mysql.com/doc/relnotes/mysql/8.3/en/news-8-3-0.html[MySQL 8.3]
* https://github.com/oracle/oracle-r2dbc/releases/tag/1.2.0[Oracle R2DBC 1.2.0]
* https://github.com/rabbitmq/rabbitmq-java-client/releases/tag/v5.20.0[Rabbit AMQP Client 5.20]
* https://github.com/rabbitmq/rabbitmq-stream-java-client/releases/tag/v0.15.0[Rabbit Stream Client 0.15]
* https://raw.githubusercontent.com/rest-assured/rest-assured/master/changelog.txt[REST Assured 5.4]



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

* `spring.config.activate.on-cloud-platform=none` will now match when the active cloud platform is null.
* Added a configuration option for "path" field inclusion in error responses. This can be controlled by the `server.error.include-path` property. It defaults to `always`.
* The WebFlux `DefaultErrorAttributes` now use `request.requestPath().value()` to populate path error attribute.
* Added the property `server.tomcat.threads.max-queue-capacity` to configure the maximum queue size for the Tomcat web server connector.
* The configuration processor now checks the `additional-spring-configuration-metadata.json` for superfluous keys and fails if it encounters any.
* Added a property named `spring.task.execution.pool.shutdown.accept-tasks-after-context-close` to control if the `ThreadPoolTaskExecutor` accepts tasks after the context shutdown has been initiated.
* Added the property `server.reactive.session.max-sessions` to control the number of maximum sessions when using WebFlux.
* `ExecutionContextSerializer` beans are now automatically applied to the Spring Batch configuration.
  If none is provided, `DefaultExecutionContextSerializer` is used.
* The started log messages produced by the four supported web servers (Jetty, Netty, Tomcat, and Undertow) are now more consistent.
* Added `client-id` and `subscription-durable` properties for JMS connections.
* If a class implements multiple servlet interfaces, like `Filter` or `Servlet`, it will now be registered for all of the interfaces (e.g. one registration for a filter and one for a servlet).

== Deprecations in Spring Boot 3.3.0-M1

None.
