Skip to content

Releases: spring-projects/spring-boot

v4.1.0

10 Jun 18:21

Choose a tag to compare

Full release notes for Spring Boot 4.1 are available on the wiki.

⭐ New Features

  • Add public constructor to InvalidConfigurationPropertyValueException that accepts a cause #50211
  • Reduce memory consumption when repeatedly calling WritableJson.toByteArray #49428

🐞 Bug Fixes

  • MailSender auto-configuration does not enable hostname verification #50747
  • Artemis auto-configuration uses a predictable default location for the embedded broker's data #50745
  • Embedded LDAP SSL should not be enabled when its bundle is empty #50700
  • InetAddressFilter.externalAddresses does not exclude special purpose addresses from RFC 6890 #50668
  • NullPointerException in reactor-netty SniProvider and unmapped SSL bundle with RSocket #50645
  • SSL should not be enabled when a SSL bundle is overridden to an empty string #50635
  • Test auto-configuration no longer integrates Spring Security with HtmlUnitDriver #50633
  • Configuration property metadata includes incorrect class references #50632
  • Docker Compose support does not restore thread interrupt flag when catching InterruptedException #50618
  • RabbitProperties enables SSL even when spring.rabbitmq.ssl.bundle is overridden to an empty string #50612
  • NullPointerException in reactor-netty SniProvider when SSL bundle uses client-auth or server truststore without server-name-bundles #50610
  • SpringJtaPlatform should have been deprecated since 4.1.0-M3 #50592
  • Layer written outside the output location of '//' exception is thrown when using extract layers in root directory #50510
  • ConfigurationPropertiesReportEndpoint exposes AOP proxy internals #50417
  • Created StackTracePrinter instances have no access to the Environment #50414
  • MappingsEndpoint reports the context's own ID as parentId when a parent exists #50412
  • Buildpack module does not validate long-to-int casts #50410
  • Gradle gRPC support fails if protobuf-java dependency is used instead of protobuf-java-util #50405
  • GraphQL WebSocket support does not configure allowed origins #50394
  • Spring Boot Loader Does Not Support RSA and EC Signed Jars #50298
  • Meter registries are not removed from the global registry when the context is closed #50287
  • DataSourceBuilder cannot derive a DataSource from a lazy connection proxy #50271
  • Nullable annotations from AbstractErrorController.getErrorAttributes are not aligned with implementation #50266
  • Bean definitions can be added with an initializer before setAllowBeanDefinitionOverriding is called #50264
  • EndpointRequest links matcher unnecessarily matches HTTP methods other than GET #50261
  • Actuator's '/cloudfoundryapplication' endpoint does not work if restrictive CORS configuration is provided using a bean named corsConfigurationSource #50258
  • ThreadPoolTaskScheduleBuilder unnecessarily loses precision when configuring await termination time #50234
  • NimbusJwtDecoder silently accepts unknown values for spring.security.oauth2.resourceserver.jwt.jws-algorithms #50228
  • Missing dependency management for spring-boot-web-server-test #50224
  • Spring Batch support for MongoDB modules are not included in dependency management #50223
  • Apply HTML escaping to timestamp attribute in Whitelabel error page #50216
  • GrpcServerHealthScheduler is not started in servlet environments #50209
  • Setting server.servlet.session.cookie.partitioned=true has no effect when using Tomcat #50204

📔 Documentation

  • Fix reference to Gradle documentation for module replacement #50647
  • Document SSL reloading with Let's Encrypt #50630
  • Remove the use of Optional from Data Neo4j repository examples #50622
  • Fix typos in documentation #50620
  • Clarify dependency requirement for Bean Validation support #50614
  • Document Java 25 requirement for AOT cache #50485
  • Add links for Java CAS Client Spring Boot Starter #50285
  • Document known testcontainers lifecycle issues #50220
  • Document adding multiple connectors for Jetty #50218
  • Polish InvalidConfigurationPropertyValueException constructor javadoc #50214
  • Fix typo in Spring Security OAuth2 client registration documentation #50199

🔨 Dependency Upgrades

Read more

v4.0.7

10 Jun 18:50

Choose a tag to compare

🐞 Bug Fixes

  • MailSender auto-configuration does not enable hostname verification #50746
  • Artemis auto-configuration uses a predictable default location for the embedded broker's data #50744
  • NullPointerException in reactor-netty SniProvider and unmapped SSL bundle with RSocket #50640
  • SSL should not be enabled when a SSL bundle is overridden to an empty string #50634
  • Docker Compose support does not restore thread interrupt flag when catching InterruptedException #50617
  • RabbitProperties enables SSL even when spring.rabbitmq.ssl.bundle is overridden to an empty string #50611
  • NullPointerException in reactor-netty SniProvider when SSL bundle uses client-auth or server truststore without server-name-bundles #50609
  • Test auto-configuration no longer integrates Spring Security with HtmlUnitDriver #50602
  • Layer written outside the output location of '//' exception is thrown when using extract layers in root directory #50509
  • ConfigurationPropertiesReportEndpoint exposes AOP proxy internals #50416
  • Created StackTracePrinter instances have no access to the Environment #50413
  • MappingsEndpoint reports the context's own ID as parentId when a parent exists #50411
  • Buildpack module does not validate long-to-int casts #50409
  • GraphQL WebSocket support does not configure allowed origins #50393
  • Configuration property metadata includes incorrect class references #50375
  • Spring Boot Loader Does Not Support RSA and EC Signed Jars #50297
  • Meter registries are not removed from the global registry when the context is closed #50286
  • Nullable annotations from AbstractErrorController.getErrorAttributes are not aligned with implementation #50265
  • EndpointRequest links matcher unnecessarily matches HTTP methods other than GET #50260
  • Actuator's '/cloudfoundryapplication' endpoint does not work if restrictive CORS configuration is provided using a bean named corsConfigurationSource #50257
  • ThreadPoolTaskScheduleBuilder unnecessarily loses precision when configuring await termination time #50233
  • NimbusJwtDecoder silently accepts unknown values for spring.security.oauth2.resourceserver.jwt.jws-algorithms #50227
  • Apply HTML escaping to timestamp attribute in Whitelabel error page #50215
  • Setting server.servlet.session.cookie.partitioned=true has no effect when using Tomcat #50201

📔 Documentation

  • Fix reference to Gradle documentation for module replacement #50646
  • Document SSL reloading with Let's Encrypt #50629
  • Remove the use of Optional from Data Neo4j repository examples #50621
  • Fix typos in documentation #50619
  • Clarify dependency requirement for Bean Validation support #50613
  • Document Java 25 requirement for AOT cache #50484
  • Add links for Java CAS Client Spring Boot Starter #50281
  • Document known testcontainers lifecycle issues #50219
  • Document adding multiple connectors for Jetty #50217
  • Polish InvalidConfigurationPropertyValueException constructor javadoc #50213
  • Fix typo in Spring Security OAuth2 client registration documentation #50198

🔨 Dependency Upgrades

Read more

v3.5.15

10 Jun 19:30

Choose a tag to compare

🐞 Bug Fixes

  • Artemis auto-configuration uses a predictable default location for the embedded broker's data #50743
  • MailSender auto-configuration does not enable hostname verification #50742
  • SSL should not be enabled when a SSL bundle is overridden to an empty string #50624
  • Layer written outside the output location of '//' exception is thrown when using extract layers in root directory #50501
  • Docker Compose support does not restore thread interrupt flag when catching InterruptedException #50451
  • RabbitProperties enables SSL even when spring.rabbitmq.ssl.bundle is overridden to an empty string #50429
  • GraphQL WebSocket support does not configure allowed origins #50391
  • Buildpack module does not validate long-to-int casts #50382
  • MappingsEndpoint reports the context's own ID as parentId when a parent exists #50373
  • Created StackTracePrinter instances have no access to the Environment #50303
  • NullPointerException in reactor-netty SniProvider when SSL bundle uses client-auth or server truststore without server-name-bundles #50301
  • Spring Boot Loader Does Not Support RSA and EC Signed Jars #50292
  • ConfigurationPropertiesReportEndpoint exposes AOP proxy internals #50273
  • Actuator's '/cloudfoundryapplication' endpoint does not work if restrictive CORS configuration is provided using a bean named corsConfigurationSource #50254
  • Meter registries are not removed from the global registry when the context is closed #50235
  • ThreadPoolTaskScheduleBuilder unnecessarily loses precision when configuring await termination time #50225
  • Apply HTML escaping to timestamp attribute in Whitelabel error page #50205
  • NimbusJwtDecoder silently accepts unknown values for spring.security.oauth2.resourceserver.jwt.jws-algorithms #50118
  • EndpointRequest links matcher unnecessarily matches HTTP methods other than GET #50095

📔 Documentation

  • Fix reference to Gradle documentation for module replacement #50641
  • Remove the use of Optional from Data Neo4j repository examples #50600
  • Fix typos in documentation #50593
  • Document Java 25 requirement for AOT cache #50482
  • Clarify dependency requirement for Bean Validation support #50290
  • Document SSL reloading with Let's Encrypt #50222
  • Polish InvalidConfigurationPropertyValueException constructor javadoc #50212
  • Document known testcontainers lifecycle issues #50210
  • Document configuring multiple connectors with Jetty #50206
  • Fix typo in Spring Security OAuth2 client registration documentation #50193

🔨 Dependency Upgrades

Read more

v4.1.0-RC1

23 Apr 15:54

Choose a tag to compare

v4.1.0-RC1 Pre-release
Pre-release

⭐ New Features

  • Add support for docker.elastic.co/elasticsearch/elasticsearch #50119
  • Narrow the scope of icons pattern to /icons/icon-* #50084
  • Add configuration options for KafkaTemplate's allowNonTransactional and closeTimeout #49954
  • Align ReactorHttpClientBuilder defaults with Spring Framework and provide an opt-out #49950
  • Add support for providing a custom SessionTimeout bean #49883
  • Add support for Redis Annotation driven listeners #49858
  • Support spring.webflux.default-html-escape property for application-wide HTML escaping configuration #49791
  • Add fallback support for '/opt/homebrew/bin' on macOS #49721
  • Support InetAddress filtering for HTTP Clients #49687
  • Monitor certificates from truststore in SslMeterBinder #49641
  • Enable ansi support by default on Windows 11+ #49571
  • Add '@GrpcAdvice' exception handling support #49053
  • Add support for OpenTelemetry SDK environment variables #48799
  • Add ability to read custom layers.xml from classpath #32466
  • Support LazyConnectionDataSourceProxy #15480

🐞 Bug Fixes

  • Default security is misconfigured when spring-boot-actuator-autoconfigure is present and spring-boot-health is not #50190
  • Elasticsearch Rest5Client auto-configuration misconfigures underlying HTTP client #50189
  • ApplicationPidFileWriter does not handle symlinks correctly #50186
  • RandomValuePropertySource is not suitable for secrets #50184
  • Cassandra auto-configuration misconfigures CqlSessionBuilder #50182
  • ApplicationTemp does not handle symlinks correctly #50179
  • Remote DevTools performs comparison incorrectly #50177
  • spring.rabbitmq.ssl.verify-hostname is applied inconsistently #50175
  • GrpcDisableCsrfHttpConfigurer incorrectly uses inverse of 'spring.grpc.server.security.csrf.enabled' property #50145
  • API versioning path strategy should be applied path last as it is not meant to yield #50127
  • Whole number values are ignored when configuring min and max expected values and SLO boundaries for a distribution summary meter #50078
  • Classic starters are missing several modules #50072
  • Module spring-boot-resttestclient is missing from spring-boot-starter-test-classic #50070
  • Annotations like @Ssl don't work on @Bean methods when using @ServiceConnection #50065
  • EnversRevisionRepositoriesRegistrar should reuse @EnableEnversRepositories rather than configuring the JPA counterpart #50040
  • WebFlux Cloud Foundry links endpoint includes query string from received request in resolved links #50018
  • Imports on a containing test class are ignored when a nested class has imports #50013
  • Spring Security's PathPatternRequestMatcher.Builder is not auto-configured when using WebMvcTest and spring-boot-security-test #49988
  • Reactive MongoDB starter has a transitive dependency on the synchronous MongoDB driver #49958
  • With spring.jackson.use-jackson2-defaults set to true, FAIL_ON_UNKNOWN_PROPERTIES is enabled #49957
  • 500 response from env endpoint when supplied pattern is invalid #49947
  • HTTP method is lost when configuring excludes in EndpointRequest #49944
  • Honor HttpMethod for reactive additional endpoint paths #49881
  • Docker Compose support doesn't work with apache/artemis image #49870
  • Docker Compose support doesn't work with apache/activemq image #49867
  • ReactiveOAuth2ResourceServerAutoConfiguration should trigger only on real Reactive Applications #49807
  • Test starters 'spring-boot-starter-grpc-client-test' and 'spring-boot-starter-grpc-server-test' are missing #49690
  • Properties in '@ConfigurationProperties' annotated type shouldn't be able to define the same '@Name' #49565
  • Distribution's SLO, minimum expected value, and maximum expected value are not applied to long task timer meters #49190
  • WebConversionService breaks embedded value resolving #8923

📔 Documentation

  • Update docs to encourage Java fundamentals for beginners that prefer to learn that way #50147
  • HTTP Service Interface Clients still document that API versioning can be configured via properties #50128
  • Link to the observability section of the Lettuce documentation is broken #50098
  • Javadoc for StaticResourceLocation.FAVICON doesn't describe icons location #50086
  • MySamlRelyingPartyConfiguration is missing a Kotlin sample #50025
  • Move OAuth2 and SAML 2.0 documentation to a security section #50022
  • Incorrect default value for management.httpexchanges.recording.include in configuration metadata #50020
  • Link to the Kubernetes documentation when discussing startup probes #50016
  • Document missing gRPC's default unit in GrpcClientProperties #49879
  • Document the need for Liquibase and Flyway starters #49875
  • Typo in JdbcSessionAutoConfiguration Javadoc #49874
  • Clarify that configuration property default values are not available through the Environment #49852
  • Kafka documentation refers to deprecated JSON serializer and deserializer classes #49834
  • Document gRPC Support #49291

🔨 Dependency Upgrades

Read more

v4.0.6

23 Apr 15:39

Choose a tag to compare

🐞 Bug Fixes

  • Default security is misconfigured when spring-boot-actuator-autoconfigure is present and spring-boot-health is not #50188
  • Elasticsearch Rest5Client auto-configuration misconfigures underlying HTTP client #50187
  • ApplicationPidFileWriter does not handle symlinks correctly #50185
  • RandomValuePropertySource is not suitable for secrets #50183
  • Cassandra auto-configuration misconfigures CqlSessionBuilder #50180
  • ApplicationTemp does not handle symlinks correctly #50178
  • Remote DevTools performs comparison incorrectly #50176
  • spring.rabbitmq.ssl.verify-hostname is applied inconsistently #50174
  • Whole number values are ignored when configuring min and max expected values and SLO boundaries for a distribution summary meter #50077
  • Classic starters are missing several modules #50071
  • Module spring-boot-resttestclient is missing from spring-boot-starter-test-classic #50069
  • Annotations like @Ssl don't work on @Bean methods when using @ServiceConnection #50064
  • EnversRevisionRepositoriesRegistrar should reuse @EnableEnversRepositories rather than configuring the JPA counterpart #50039
  • WebFlux Cloud Foundry links endpoint includes query string from received request in resolved links #50017
  • Imports on a containing test class are ignored when a nested class has imports #50012
  • With spring.jackson.use-jackson2-defaults set to true, FAIL_ON_UNKNOWN_PROPERTIES is enabled #49951
  • 500 response from env endpoint when supplied pattern is invalid #49946
  • Reactive MongoDB starter has a transitive dependency on the synchronous MongoDB driver #49945
  • HTTP method is lost when configuring excludes in EndpointRequest #49943
  • Honor HttpMethod for reactive additional endpoint paths #49880
  • Docker Compose support doesn't work with apache/artemis image #49869
  • Docker Compose support doesn't work with apache/activemq image #49866
  • Spring Security's PathPatternRequestMatcher.Builder is not auto-configured when using WebMvcTest and spring-boot-security-test #49854
  • API versioning path strategy should be applied path last as it is not meant to yield #49800

📔 Documentation

  • Update docs to encourage Java fundamentals for beginners that prefer to learn that way #50146
  • HTTP Service Interface Clients still document that API versioning can be configured via properties #50126
  • Link to the observability section of the Lettuce documentation is broken #50097
  • Javadoc for StaticResourceLocation.FAVICON doesn't describe icons location #50085
  • MySamlRelyingPartyConfiguration is missing a Kotlin sample #50024
  • Incorrect default value for management.httpexchanges.recording.include in configuration metadata #50019
  • Link to the Kubernetes documentation when discussing startup probes #50015
  • Typo in JdbcSessionAutoConfiguration Javadoc #49873
  • Clarify that configuration property default values are not available through the Environment #49851
  • Document the need for Liquibase and Flyway starters #49839
  • Kafka documentation refers to deprecated JSON serializer and deserializer classes #49826

🔨 Dependency Upgrades

Read more

v3.5.14

23 Apr 16:01

Choose a tag to compare

🐞 Bug Fixes

  • ApplicationPidFileWriter does not handle symlinks correctly #50173
  • RandomValuePropertySource is not suitable for secrets #50172
  • Cassandra auto-configuration misconfigures CqlSessionBuilder #50171
  • ApplicationTemp does not handle symlinks correctly #50170
  • Remote DevTools performs comparison incorrectly #50169
  • spring.rabbitmq.ssl.verify-hostname is applied inconsistently #50168
  • EnversRevisionRepositoriesRegistrar should reuse @EnableEnversRepositories rather than configuring the JPA counterpart #50035
  • Annotations like @Ssl don't work on @Bean methods when using @ServiceConnection #50033
  • Whole number values are ignored when configuring min and max expected values and SLO boundaries for a distribution summary meter #50021
  • WebFlux Cloud Foundry links endpoint includes query string from received request in resolved links #50008
  • 500 response from env endpoint when supplied pattern is invalid #49942
  • HTTP method is lost when configuring excludes in EndpointRequest #49885
  • Docker Compose support doesn't work with apache/artemis image #49865
  • Honor HttpMethod for reactive additional endpoint paths #49864
  • Docker Compose support doesn't work with apache/activemq image #49863
  • Imports on a containing test class are ignored when a nested class has imports #49860

📔 Documentation

  • Link to the observability section of the Lettuce documentation is broken #50092
  • Javadoc for StaticResourceLocation.FAVICON doesn't describe icons location #50083
  • MySamlRelyingPartyConfiguration is missing a Kotlin sample #50023
  • Incorrect default value for management.httpexchanges.recording.include in configuration metadata #50010
  • Link to the Kubernetes documentation when discussing startup probes #50007
  • Update docs to encourage Java fundamentals for beginners that prefer to learn that way #49895
  • Clarify that configuration property default values are not available through the Environment #49835

🔨 Dependency Upgrades

❤️ Contributors

Thank you to all the contributors who worked on this release:

@MohammedGhallab, @dlwldnjs1009, @edwardsre, @kodama-kcc, @kwondh5217, @quaff, @refeccd, and @scordio

v4.1.0-M4

26 Mar 11:04

Choose a tag to compare

v4.1.0-M4 Pre-release
Pre-release

⭐ New Features

  • Add 'spring.jpa.bootstrap' property for async background bootstrapping #49733
  • Add support for custom GrpcServerObservationConvention #49730
  • A Spring Data JPA bootstrap mode property of 'deferred' should provide a meaningful message if no suitable AsyncTaskExecutor is found #49688

🐞 Bug Fixes

  • Test starter for Spring Integration does not include Spring Integration test module #49786
  • Some sliced tests that import TransactionAutoConfiguration do not import TransactionManagerCustomizationAutoConfiguration #49783
  • WebSocket app fails to start when Jackson is on the classpath but there's no JsonMapper bean #49755
  • WebSocket messaging's task executors are only auto-configured and stompWebSocketHandlerMapping is only forced to be eager when using Jackson #49754
  • Metadata annotation processor ignores method-level @NestedConfigurationProperty when using constructor binding #49739
  • Override of property in external 'application.properties' or 'application.yaml' is ignored #49732
  • NativeImageResourceProvider does not find Flyway migration scripts in subdirectories #49707
  • Add @ConditionalOnWebApplication to NettyReactiveWebServerAutoConfiguration #49699
  • App using spring-cloud-stream-binder-rabbit fails to start with 4.1.0-M3 #49676
  • @GraphQlTest does not include @ControllerAdvice #49673

📔 Documentation

  • Fix incorrect indefinite articles in Javadoc #49728
  • Document gRPC's default unit in configuration properties consistently #49722
  • Add some more Kotlin examples and trivial style fixes #49715
  • Overhaul Spring Session documentation following modularization #49705

🔨 Dependency Upgrades

  • Upgrade to Artemis 2.53.0 #49769
  • Upgrade to Brave 6.3.1 #49771
  • Upgrade to Grpc Java 1.80.0 #49772
  • Upgrade to Jackson 2 Bom 2.21.2 #49773
  • Upgrade to jOOQ 3.21.0 #49774
  • Upgrade to Netty 4.2.12.Final #49795
  • Upgrade to Prometheus Client 1.5.1 #49777
  • Upgrade to Protobuf Common Protos 2.67.0 #49778
  • Upgrade to Protobuf Java 4.34.1 #49779
  • Upgrade to Protobuf Maven Plugin 5.1.0 #49776
  • Upgrade to Thymeleaf Layout Dialect 4.0.1 #49780
  • Upgrade to Tomcat 11.0.20 #49781
  • Upgrade to Zipkin Reporter 3.5.3 #49770

❤️ Contributors

Thank you to all the contributors who worked on this release:

@deejay1, @dlwldnjs1009, @kwondh5217, @ljrmorgan, @quaff, and @therepanic

v4.0.5

26 Mar 11:05

Choose a tag to compare

🐞 Bug Fixes

  • Test starter for Spring Integration does not include Spring Integration test module #49784
  • Some sliced tests that import TransactionAutoConfiguration do not import TransactionManagerCustomizationAutoConfiguration #49782
  • WebSocket messaging's task executors are only auto-configured and stompWebSocketHandlerMapping is only forced to be eager when using Jackson #49753
  • WebSocket app fails to start when Jackson is on the classpath but there's no JsonMapper bean #49749
  • Metadata annotation processor ignores method-level @NestedConfigurationProperty when using constructor binding #49738
  • Override of property in external 'application.properties' or 'application.yaml' is ignored #49731
  • NativeImageResourceProvider does not find Flyway migration scripts in subdirectories #49706
  • Add @ConditionalOnWebApplication to NettyReactiveWebServerAutoConfiguration #49695
  • @GraphQlTest does not include @ControllerAdvice #49672

📔 Documentation

  • Fix incorrect indefinite articles in Javadoc #49727
  • Add some more Kotlin examples and trivial style fixes #49714
  • Overhaul Spring Session documentation following modularization #49704

🔨 Dependency Upgrades

  • Upgrade to Brave 6.3.1 #49763
  • Upgrade to Jackson 2 Bom 2.21.2 #49764
  • Upgrade to jOOQ 3.19.31 #49765
  • Upgrade to Netty 4.2.12.Final #49794
  • Upgrade to Tomcat 11.0.20 #49767
  • Upgrade to Zipkin Reporter 3.5.3 #49762

❤️ Contributors

Thank you to all the contributors who worked on this release:

@Joowon-Seo, @deejay1, @dlwldnjs1009, @kwondh5217, @ljrmorgan, and @quaff

v3.5.13

26 Mar 11:03

Choose a tag to compare

⚠️ Attention Required

  • Jackson has been upgraded to 2.21.2 in response to the Jackson team ending support for Jackson 2.19.x and 2.20.x. #49365

🐞 Bug Fixes

  • WebSocket messaging's task executors are only auto-configured and stompWebSocketHandlerMapping is only forced to be eager when using Jackson #49750
  • Metadata annotation processor ignores method-level @NestedConfigurationProperty when using constructor binding #49734
  • Override of property in external 'application.properties' or 'application.yaml' is ignored #49724
  • Some sliced tests that import TransactionAutoConfiguration do not import TransactionManagerCustomizationAutoConfiguration #49716
  • NativeImageResourceProvider does not find Flyway migration scripts in subdirectories #49661
  • @GraphQlTest does not include @ControllerAdvice #49660

📔 Documentation

  • Fix incorrect indefinite articles in Javadoc #49723
  • Add some more Kotlin examples and trivial style fixes #49710

🔨 Dependency Upgrades

  • Upgrade to Hibernate 6.6.45.Final #49757
  • Upgrade to jOOQ 3.19.31 #49758
  • Upgrade to Netty 4.1.132.Final #49759
  • Upgrade to Tomcat 10.1.53 #49760
  • Upgrade to Undertow 2.3.24.Final #49761
  • Upgrade to Zipkin Reporter 3.5.3 #49756

❤️ Contributors

Thank you to all the contributors who worked on this release:

@Joowon-Seo, @deejay1, @dlwldnjs1009, and @ljrmorgan

v4.1.0-M3

20 Mar 02:49

Choose a tag to compare

v4.1.0-M3 Pre-release
Pre-release

⚠️ Attention Required

  • OpenTelemetry's ZipkinSpanExporter has been deprecated and its support will be removed in Spring Boot 4.2. #49557
  • The default value for server.tomcat.max-part-count has been increased from 10 to 50. This aligns it with Tomcat's own default and the default in Spring Boot 3.x. #49312

⭐ New Features

  • Introduce Generic AMQP 1.0 client support #49621
  • Rename spring-boot-amqp to spring-boot-rabbitmq #49620
  • Add support for SslBundles to OTLP metrics export #49590
  • Add support for SslBundles to OTLP traces export #49584
  • Add support for SslBundles to OTLP logging export #49583
  • Add more fine-grained support for selecting metric exemplars #49572
  • Add property to disable the OpenTelemetry SDK #49564
  • Add properties to select OpenTelemetry's sampler #49548
  • Configure BootBuildInfo task created using the DSL as a src dir of the main source set's resources #49547
  • Add properties to configure BatchLogRecordProcessor #49543
  • Add type-safe binding support for gPRC service config #49540
  • Add auto-configuration for OTLP exemplars #49538
  • Output Docker Compose's logs when start or up fails #49423
  • Provide protobuf gradle plugin support #49369
  • Provide protobuf-maven-plugin configuration in the starter parent POM #49353
  • Add FailureAnalyzedException to reduce the number of internal FailureAnalyzers required #49320
  • Add more styling support to the Logback and Log4j2 color converters #49285
  • Create reusable default TaskScheduler configuration #49280
  • Update TestRestTemplate's default cookie handling to match RestTemplate's #49261
  • Add Spring gRPC server and client observation support #49056
  • Fail gRPC servlet applications if server.http2.enabled is not enabled #49050
  • Add Spring gRPC Server Health Check Support #49048
  • Add Spring gRPC server and client security support #49047
  • Add Spring gRPC Testing Support #49046
  • Add Spring gRPC Client Support #49045
  • Add Spring gRPC Server Support #49044
  • Add support for Spring gRPC #49043
  • Add builder customizer for SpringOpaqueTokenIntrospector and SpringReactiveOpaqueTokenIntrospector #49029
  • Deprecate LiveReload support for removal #48971
  • Add SSL support to auto-configuration for RabbitMQ Streams #48960
  • Allow empty objects to be loaded from YAML #48958
  • Support binding of default properties when an empty property is defined #48920
  • Auto-configure Jackson mapper beans with a bean-based HandlerInstantiator #48711
  • Add support for auto-configuring ExpressionJwtGrantedAuthoritiesConverter #48490
  • Deprecate RootUriTemplateHandler in favor of DefaultUriBuilderFactory #48350
  • Add Log4j2 rolling policy configuration #47260
  • Enable auto-configuration of OAuth2 resource server machinery in a non-webapp #43978
  • Add support for Spring Batch MongoDB #43236

🐞 Bug Fixes

  • EndpointRequest request matcher for health groups is too complex #49650
  • "/cloudfoundryapplication" web path is not limited to Actuator #49647
  • Fix EndpointRequest.toLinks() when base-path is '/' #49618
  • Docker fails when a 'tcp://' address ends with a slash (for example 'tcp://docker:2375/') #49597
  • RSocket exposes duplicate endpoint for websocket setups #49595
  • Failure analysis for a missing mail sender is misleading #49585
  • Dependency management for HttpClient5 misses httpclient5-observation #49553
  • SpringBootContextLoader mentions class that no longer exists in message for classes or locations assertion #49536
  • Missing starter for spring-boot-restdocs #49524
  • Ordering of 'spring.config.import' is inconsistent when defined in environment or system properties #49483
  • "spring.main.cloud-platform=none" does not disable cloud features #49480
  • SSL support with Docker Compose does not work as documented #49386
  • NoSuchMethodException when forcing the use of Log4J2LoggingSystem using org.springframework.boot.logging.LoggingSystem system property #49384
  • ErrorPageRegistrarBeanPostProcessor is not auto-configured in war deployments and the ErrorPageCustomizer is not applied #49380
  • Auto-configuration overrides authorization server configuration applied by Customizer beans #49379
  • Using @AutoConfigureWebTestClient prevents separate configuration of spring.test.webtestclient.timeout from taking effect #49345
  • Several reactive starters do not depend on spring-boot-reactor #49335
  • HTTP Service Interface Client doesn't work in a native image due to missing property binding #49326
  • RouterFunctions descriptions in Actuator do not support nesting #49303
  • Maven plugin does not set '-parameters' option when processing AOT code #49296

📔 Documentation

  • Document support for Java 26 #49605
  • List all supported colors when describing color-coded log output #49563
  • Improve EndpointRequest matcher documentation #49521
  • Clarify that running is the only supported input state when triggering a Quartz job through the Actuator endpoint #49515
  • Document security considerations for forwarded headers in cloud deployments #49511
  • Tutorial in the reference guide has outdated instructions #49430
  • Document additional repositories required for shibboleth.net #49393
  • Javadoc of JettyHttpClientBuilder refers to the wrong type #49388
  • Example spring-devtools.properties file is shown in the wrong format #49363
  • Clarify inferred relationships between OAuth 2 registrations and providers #49328
  • Mention using org.springframework.boot.aot Gradle plugin directly for AOT processing with the JVM [#49322](...
Read more