Skip to content

Spring Boot 3.5.0 RC1 Release Notes

Phillip Webb edited this page Apr 14, 2025 · 15 revisions

Spring Boot 3.5.0-RC1 Release Notes

Upgrading from Spring Boot 3.4

Auto-configured TaskExecutor Names

Thus far, Spring Boot auto-configures a TaskExecutor with the taskExecutor and applicationTaskExecutor bean names. As of this release, only the applicationTaskExecutor bean name is provided. Code that is requesting the auto-configured Executor by name should be adapted to use applicationTaskExecutor.

If you relied on this behaviour and cannot change it immediately, the alias can be added using a BeanFactoryPostProcessor, as shown in the following example:

@Configuration
public class MyConfiguration {

    @Bean
    static BeanFactoryPostProcessor taskExecutorAliasBeanFactoryPostProcessor() {
        return (beanFactory) -> beanFactory.registerAlias("applicationTaskExecutor", "taskExecutor");
    }

}

ECS Structured Logging JSON

JSON output for ECS structure logging has been updated to use the nested format. This should improve compatibility with the backends that consume the JSON.

Minimum Requirements Changes

None.

New and Noteworthy

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

AsyncTaskExecutor with custom Executor

If an Executor bean is present, Spring Boot can now be configured to auto-configure an AsyncTaskExecutor anyway. To do so, set the spring.task.execution.mode property to force.

When running in this mode, it makes sure that all integrations, including regular @Async processing uses the auto-configured executor, unless an AsyncConfigurer bean is defined.

Auto-configuration for bean background initialization

Spring Boot now auto-configures a bean named bootstrapExecutor if it’s not already there. For that to work, there needs to be a bean named applicationTaskExecutor in the context, which is the default if you haven’t defined a custom Executor bean. This enables bean background initialization out of the box.

ClientHttpConnector Builder and Configuration Properties

TODO

Annotations to register Filter and Servlet

As an annotation-based alternative to ServletRegistrationBean and FilterRegistrationBean two new annotations have been added. @ServletRegistration can be used to register Servlet, while @FilterRegistration can be used to register Filter, as shown in this example:

@Configuration(proxyBeanMethods = false)
class MyConfiguration {

    @Bean
    @FilterRegistration(name = "my-filter", urlPatterns = "/test/*", order = 0)
    MyFilter myFilter() {
        return new MyFilter();
    }

}

Dependency Upgrades

Spring Boot 3.5.0-RC1 moves to new versions of several Spring projects:

TBD

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

TBD

Miscellaneous

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

  • MeterProvider beans are now automatically configured on OtlpHttpLogRecordExporter, OtlpHttpSpanExporter, OtlpGrpcLogRecordExporter and OtlpGrpcSpanExporter.

  • The referral mode for Spring LDAP can be configured with the new spring.ldap.referral property.

  • Customizers for OtlpHttpSpanExporterBuilder and OtlpGrpcSpanExporterBuilder have been added.

  • The new property spring.kafka.consumer.max-poll-interval can be used to configure Kafka’s maximum delay between poll invocations.

  • RECORD_COMPONENT has been removed as a target from @DefaultValue, as it wasn’t really necessary.

Deprecations in Spring Boot 3.5.0-RC1

  • The configuration property spring.mvc.converters.preferred-json-mapper has been deprecated. It is replaced by spring.http.converters.preferred-json-mapper.

  • The configuration properties spring.codec.log-request-details and spring.codec.max-in-memory-size have been deprecated. They are replaced by spring.http.codecs.log-request-details and spring.http.codecs.max-in-memory-size respectively.

  • OpenTelemetryLoggingAutoConfiguration and SdkLoggerProviderBuilderCustomizer have been moved into the org.springframework.boot.actuate.autoconfigure.logging.opentelemetry package. The old classes have been deprecated.

Clone this wiki locally