:boot-docs: https://docs.spring.io/spring-boot/3.5

= Spring Boot 3.5.0-M3 Release Notes



== Upgrading from Spring Boot 3.4



=== Native test with Maven

The `nativeTest` profile has been harmonized with `native` to make it friendly for multi-modules project.
Native test execution will not occur unless the Spring Boot and Native Build tools plugin are defined in the project.
This is already the case for the `native` profile.

See {boot-docs}/maven-plugin/aot.html#aot.processing-tests[the documentation] for more details.



=== Groovy Template Configuration Properties
The `spring.groovy.template.configuration.*` properties have been deprecated in favor of new and existing `spring.groovy.template.*` properties. See link:Spring-Boot-3.5.0-M3-Configuration-Changelog[the configuration changelog] for further details.



=== Minimum Requirements Changes
None.



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


=== Testcontainers and Docker Compose support for `lldap/lldap` containers

Containers using the `lldap/lldap` image can now be used with Docker Compose and Testcontainers.
Testcontainers supports this image with `LLdapContainer`.



=== OpenTelemetry

Spring Boot now supports the `OTEL_RESOURCE_ATTRIBUTES` and `OTEL_SERVICE_NAME` environment variables.
Resource attributes configured through the configuration property taking precedence over those from the environment variables.

Additionally, support for the `service.namespace` resource attribute has been added.
The value of this attribute is read from the `spring.application.group` configuration property.

Support for the `service.group` resource attribute has been deprecated and will be removed in a future release.

It's now possible to define a custom `BatchSpanProcessor` bean.

The span export can now be configured with newly added properties under the `management.tracing.opentelemetry.export` prefix.



=== Spring Batch
The `JobParametersConverter` used by Spring Batch can now be customised by defining a bean of that type.
When no such bean is defined the `DefaultJobParametersConverter` will be used as before.

The new `spring.batch.jdbc.validate-transaction-state` property can be used to control whether transaction state is validated.
The default behavior is unchanged and transaction state will be validated.



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

- https://github.com/micrometer-metrics/micrometer/releases/tag/v1.15.0-M3[Micrometer 1.15.0-M3]
- https://github.com/micrometer-metrics/tracing/releases/tag/v1.5.0-M3[Micrometer Tracing 1.5.0-M3]
- https://github.com/spring-projects/spring-authorization-server/releases/tag/1.5.0-M2[Spring Authorization Server 1.5.0-M2]
- https://github.com/spring-projects/spring-data-bom/releases/tag/2025.0.0-M2[Spring Data 2025.0.0-M2]
- https://github.com/spring-projects/spring-graphql/releases/tag/v1.4.0-M1[Spring GraphQL 1.4.0-M1]
- https://github.com/spring-projects/spring-integration/releases/tag/v6.5.0-M3[Spring Integration 6.5.0-M3]
- https://github.com/spring-projects/spring-ldap/releases/tag/3.3.0-M3[Spring LDAP 3.3.0-M3]
- https://github.com/spring-projects/spring-security/releases/tag/6.5.0-M3[Spring Security 6.5.0-M3]
- https://github.com/spring-projects/spring-ws/releases/tag/v4.1.0-M1[Spring WS 4.1.0-M1]

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

- https://activemq.apache.org/components/artemis/download/release-notes-2.40.0[Artemis 2.40]
- https://github.com/awaitility/awaitility/wiki/ReleaseNotes4.3[Awaitility 4.3]
- https://documentation.red-gate.com/flyway/release-notes-and-older-versions/release-notes-for-flyway-engine[Flyway 11.4]
- https://github.com/HtmlUnit/htmlunit/releases/tag/4.10.0[HtmlUnit 4.10]
- https://junit.org/junit5/docs/5.12.1/release-notes/#release-notes-5.12.0[JUnit Jupiter 5.12]
- https://github.com/apache/maven-compiler-plugin/releases/tag/maven-compiler-plugin-3.14.0[Maven Compiler Plugin 3.14]
- https://github.com/mockito/mockito/releases/tag/v5.16.0[Mockito 5.16]
- https://github.com/microsoft/mssql-jdbc/releases/tag/v12.10.0[MSSQL JDBC 12.10]
- https://github.com/open-telemetry/opentelemetry-java/releases/tag/v1.48.0[OpenTelemetry 1.48]
- https://github.com/asyncer-io/r2dbc-mysql/releases/tag/r2dbc-mysql-1.4.0[R2DBC MySQL 1.4]
- https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.29.0[Selenium 4.29]
- https://github.com/SeleniumHQ/htmlunit-driver/releases/tag/htmlunit-driver-4.29.0[Selenium HtmlUnit 4.29]
- WebJars Locator Lite 1.1

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

* Logging for Cloud Native Buildpacks integration has been improved.
* The new property `spring.data.mongodb.protocol` has been added to allow the MongoDB protocol to be customized.
* Logback and Log4j2 now respect the console charset.
* The transport-specific configuration properties for GraphQL have been reorganized. `spring.graphql.path` is now `spring.graphql.http.path` and `spring.graphql.sse.timeout` is replaced by `spring.graphql.http.sse.timeout`.
* Support for Zipkin's `URLConnectionSender` has been removed.
* Removed the default value of `OtlpMetricsProperties.url`. However, this should lead to no visible changes as Micrometer then provides the default value.
* The auto-configured `JdbcTemplate` can be further customized using additional configuration properties for `ignoreWarnings`, `skipResultsProcess`, `skipUndeclaredResults`, and `resultsMapCaseInsensitive`.
* In most cases, a `DataSource` can now be auto-configured without `spring-jdbc` on the classpath. `spring-jdbc` is still required to use an embedded database without a connection pool.
* The property `server.tomcat.use-apr` now defaults to `never`. If you want to use Tomcat's APR, set the property to `when-available` or `always`.
* A `PollerMetadataCustomizer` has been added to customize Spring Integration's `PollerMetadata`.
* Garbage collector information has been added to the actuator process info.
* Removed the readonly flag from the `BuildImage` Maven mojo to remove Maven warnings.
* The `SameSite` attribute can be omitted from the session cookie by setting `server.servlet.session.cookie.same-site` or `server.reactive.session.cookie.same-site` to `omitted`.


== Deprecations in Spring Boot 3.5.0-M3

* `org.springframework.boot.autoconfigure.security.oauth2.client.ClientsConfiguredCondition` in favor of `@org.springframework.boot.autoconfigure.security.oauth2.client.ConditionalOnOAuth2ClientRegistrationProperties`
* `org.springframework.boot.autoconfigure.security.oauth2.resource.IssuerUriCondition` in favor of `@org.springframework.boot.autoconfigure.security.oauth2.resource.ConditionalOnIssuerLocationJwtDecoder`
* `org.springframework.boot.autoconfigure.security.oauth2.resource.KeyValueCondition` in favor of `@org.springframework.boot.autoconfigure.security.oauth2.resource.ConditionalOnPublicKeyJwtDecoder`
* `org.springframework.boot.devtools.autoconfigure.OnEnabledDevToolsCondition` in favor of `@org.springframework.boot.devtools.autoconfigure.ConditionalOnEnabledDevTools`

