Spring Boot v2.4.0-M2 Release Notes

Release Date: 2020-08-13 // over 3 years ago
  • ๐Ÿฑ โญ New Features

    • ๐Ÿ”ง Prefer non-reflective access to ConfigurationClassPostProcessor #22858
    • 0๏ธโƒฃ Do not include cookie headers in HTTP traces by default #22829
    • Jetty with Conscrypt no longer a requirement for easy HTTP/2 #22826
    • โž• Add no-pull option for image building #22736
    • ๐Ÿ‘‰ Use new core framework r2dbc support #22708
    • Fail hard if spring.profiles.include is used with new config processing #22693
    • ๐Ÿ‘ Allow DurationFormat and PeriodFormat to be used on parameters #22646
    • ๐Ÿ‘ Allow for programatic access to new ConfigDataEnvironment processing #22601
    • Instrument SpringBootApplication for application startup metrics #22600
    • โž• Add configuration to disable Redis Cluster dynamic sources refresh #22571
    • ๐Ÿ‘ Allow Jedis to be selected when both Jedis and Lettuce are on the classpath #22569
    • โž• Add basic auth support for Prometheus pushgateway #22548
    • โž• Add functional constructor to EnvironmentPostProcessorApplicationListener #22529
    • โž• Add support for profile groups #22522
    • 0๏ธโƒฃ Extract DefaultPropertiesPropertySource class #22520
    • โž• Add plugin management for liquibase-maven-plugin #22499
    • โž• Add CloudPlatform.isEnforced that uses a Binder #22498
    • ๐Ÿ‘ Replace ConfigFileApplicationListener and rework application properties support #22497
    • โž• Add DeferredLogFactory support #22496
    • โž• Add multi-document properties file support #22495
    • โž• Add ConfigurationPropertySource.from factory method #22494
    • โž• Add @name support for value object binding #22492
    • ๐Ÿ‘Œ Improve Liveness/Readiness health indicators and probes configuration #22483
    • โœ‚ Remove version management for exec-maven plugin #22397
    • 0๏ธโƒฃ Make DefaultErrorAttributes easier to subclass for message customization #22378
    • โž• Add properties for Netty HttpDecoderSpec #22367
    • ๐Ÿ’… Avoid unnecessary allocations in ConditionMessage for NORMAL style #22331
    • ๐Ÿ‘ Allow SpringApplication to create its application context without requiring reflection #22322
    • โž• Add failure analyzer for missing Liquibase changelog #22320
    • Switch Neo4j health checks to the new Neo4j driver #22302
    • โž• Add auto-configuration for Neo4j driver #22301
    • โฌ†๏ธ Upgrade to Spring Data Neo4j 6 #22299
    • Measure with nanoseconds in HttpExchangeTracer #22266
    • ๐Ÿ‘Œ Support configuration of localEntityIdTemplate for a SAML Relying Party #22258
    • โž• Add a property to not create HealthIndicators from AbstractRoutingDatasources #22222
    • โž• Add support for reactive Elasticsearch healthcheck #22215
    • ๐Ÿ‘Œ Support incremental annotation processing with Gradle #22150
    • ๐Ÿ‘ Allow exclude only health groups #22053
    • ๐Ÿ”ง Auto-configure Rabbit connection factory with CredentialsProvider and CredentialsRefreshService when available #22016
    • ๐Ÿ‘ Allow specifying unit type of configuration property when injected via constructor #21746
    • โž• Add option to configure PathPatternParser in Spring MVC #21694
    • โž• Add support for easily disabling metrics export #21658
    • ๐Ÿ‘Œ Support iso offset time and date-time conversion with MVC and WebFlux by setting time or date-time properties to iso-offset #21630
    • โž• Add properties to control exceptions ignored by LdapTemplate #21289
    • ๐Ÿ‘Œ Support additional R2DBC pool properties #21219
    • 0๏ธโƒฃ Switching default to include layers index for fat jar #20983
    • โž• Add support for creating property sources from volume-mounted Kubernetes ConfigMaps and Secrets #19990
    • โž• Add a test slice for Spring Data Cassandra #17490
    • ๐Ÿ”ง Consider spring.profiles.default when processing configuration files #15994
    • Application properties outside of jar should take precedence over profile-specific variants inside the jar #3845

    ๐Ÿฑ ๐Ÿž Bug Fixes

    • MustacheEnvironmentCollector with nullValue compiler option no longer works in version 2.3.1 #22938
    • Externalized Configuration ignores null values in SPRING_APPLICATION_JSON #22897
    • CouchbaseCacheManager can no longer be customized using CacheManagerCustomizer #22874
    • Requests that should be handled by an additional DispatcherServlet result in a 404 response #22856
    • Legacy endpoint ids with '-' do not migrate cleanly #22850
    • When Reactor's debug agent fails to initialize, the cause of the failure is discarded #22848
    • StartupStep are closed twice in SpringApplicationRunListeners #22776
    • ๐Ÿ— OCI image build fails if environment has any empty properties #22735
    • Kubernetes readiness probe endpoint returning 404 #22698
    • ๐Ÿ‘ NPE in BeanDefinitionLoader when loading non-Class sources and XML support is disabled #22696
    • ๐Ÿ‘€ LiquibaseEndpoint does not report change sets from ancestor contexts #22687
    • ๐Ÿš€ Async exceptions not handled by error pages in war deployments #22673
    • XADataSourceAutoConfiguration is difficult to use with DB2XADataSource as it does not have a URL property #22642
    • ๐Ÿ”ง TaskExecutorBuilder only uses second-precision when configuring the await termination period #22612
    • Profile groups are not applied to the environment #22605
    • ๐Ÿ”ง Setting ignoreInvalidFields=true on @ConfigurationProperties causes unknown fields to be ignored as well #22586
    • Spring Boot 2.3.2: new context is created for every IT class if SpyBean is used #22584
    • โš  Background preinitialisation may cause Jackson2ObjectMapperBuilder's Kotlin detection warning to be silently dropped #22581
    • ๐Ÿ‘ UndertowWebServerFactoryCustomizer does not support Options but only UndertowOptions #22579
    • โœ… WebMvcTest and WebFluxTest do not include Jackson Module beans #22577
    • CouchbaseCacheConfiguration is not ordered properly #22568
    • ๐Ÿ“‡ AbstractRepositoryConfigurationSourceSupport does not override registerBeanDefinitions(AnnotationMetadata, BeanDefinitionRegistry) #22546
    • Filter empty YAML documents #22493
    • ๐Ÿ”Š Numerous logs mentioning a failed JNDI lookup when using Jetty #22419
    • ConditionMessage#items throws an NPE with a null list of items although the Javadoc states it is tolerated #22357
    • ๐Ÿ— Image building fails with an unhelpful error message when building an image from a jar that includes the launch script #22349
    • ๐Ÿ”Œ Temporary files not cleaned up after Maven plugin execution #22328
    • ๐Ÿ”ง OnClassCondition tries to determine the outcome for single auto-configuration classes in parallel #22327
    • ๐Ÿ”ง ConfigurationPropertiesBeanDefinitionValidator interferes with EclipseLink load-time weaving #22326
    • ๐Ÿ— Image building fails when DOCKER_HOST is set to a local socket prefixed with unix:// #22304
    • A WebFlux app that depends on com.amazonaws:DynamoDBLocal fails to start #22283
    • ๐Ÿ”ง The failure when spring.redis.url is configured with a redis-sentinel:// URL is hard to diagnose #22272
    • โœ… Property spring.autoconfigure.exclude ignored by test slices #22263
    • ๐Ÿ”’ OAuth2ResourceServerAutoConfiguration does not back off completely when spring-security-oauth2-resource-server is not on the classpath #22255
    • 0๏ธโƒฃ NullPointerException in ErrorPageFilter when a MissingServletRequestParameterException is thrown and there's no DefaultHandlerExceptionResolver #22250
    • ๐Ÿ‘ Period conversion does not support a ChronoUnit of WEEKS but supports weeks in ISO-8601 (e.g. P2W) and simple (e.g. 2w) formats #22238
    • โš  Layered bootJar task causes warnings when custom source set is present in the project #22202
    • @ConditionalOnSingleCandidate does not match when there is a single candidate that is a scoped bean #22198
    • ๐Ÿšš Kafka Stream consumer metrics were lost in the move away from KafkaConsumerMetrics #22196
    • ๐Ÿ— NPE in spring-boot-maven-plugin:build-image when setting custom builder that is not a builder #22180
    • ๐Ÿ”ง Accept empty filter dispatcher types in auto-configurations #22176
    • โš  TomcatMetricsBinder may log a warning for an NPE if the context is closed before the ApplicationStartedEvent is published #22168
    • Resource loading fails in Tomcat when Spring Boot is loaded from the common class loader #22160
    • ๐Ÿ”ง Inconsistent configuration ordering with profiles #18199
    • Conditional documents in profile specific file are not loaded consistently #11109

    ๐Ÿ“” Documentation

    • ๐Ÿ“š PushGateway documentation does not document enabled flag properly #22931
    • 0๏ธโƒฃ Default value of server.jetty.accesslog.format is wrongly associated to server.forward-headers-strategy #22928
    • Use wildcard in BP_JVM_VERSION with image building #22923
    • ๐Ÿ”ง Kotlin examples for configuring bootBuildImage's environment use wrong map configuration syntax #22917
    • ๐Ÿ”ง Mention configuration customizers for WebTestClient and RestAssured in AutoConfigureRestDocs' javadoc #22911
    • ๐ŸŒ Document how to discover the HTTP Port at Runtime for both Servlet and Reactive web apps #22900
    • ๐Ÿ”ง Document that spring-boot-configuration-processor cannot detect default value defined externally #22891
    • ๐Ÿ”ง Document that application.conf is not read by default when using the Cassandra auto-configuration #22889
    • ๐Ÿ›  Fix wrong reference in ReadinessStateHealthIndicator javadoc #22846
    • ๐Ÿ“„ Docs say Health's inner details section may contain components #22775
    • โœ… Recommend the use of AopTestUtils.getTargetObject() when setting expectations on a spied bean that Spring has proxied #22759
    • Document that schema.sql and data.sql will still be run when using Flyway or Liquibase but discourage their use #22749
    • ๐Ÿ›  Fix broken links to Micrometer registry docs #22707
    • Document properties to enable probe health indicators #22697
    • ๐Ÿ”Œ Document how to use Gradle's native bom support as an alternative to the dependency management plugin #22678
    • ๐Ÿ”ง Document how to opt back in to DataSource auto-configuration when using R2DBC #22677
    • ๐Ÿ“š Clarify documentation on use of @AutoConfigureRestDocs with WebTestClient #22670
    • ๐Ÿ‘ Document Spring Data Neo4j 6 support #22652
    • ๐Ÿ“š Update metrics documentation to note the benefits of using a MeterBinder when registering a metric that relies on other beans #22630
    • ๐Ÿ“š Include a hint where to find documentation for DevTools in docs overview #22623
    • โž• Add ElasticsearchReactiveHealthIndicator to docs #22619
    • ๐Ÿ›  Fix link to Elasticsearch health indicator #22618
    • ๐Ÿ”— Link to App Engine Standard sample not working #22609
    • ๐Ÿ‘Œ Improve documentation about swapping one technical starter for another #22597
    • Document how to use MongoClientSettingsBuilderCustomizer #22590
    • ๐Ÿ”ง Document the need for configuration files to have a file extension #22588
    • ๐Ÿ”ง Document that java.util.Optional is not recommended with ConfigurationProperties #22575
    • ๐Ÿ“‡ Typo in metadata for "management.health.readinessstate.enabled" #22561
    • ๐Ÿ“š Overhaul "externalized configuration" documentation #22521
    • ๐Ÿ“š Update the documentation to avoid trivialising what the reader's learning about #22411
    • ๐Ÿ— Restructure "Building Container Images" section #22360
    • ๐Ÿ”ง Clarify the effect of ordering auto-configuration #22340
    • ๐Ÿ“š Update documentation to reflect the web server now being started immediately before the ContextRefreshedEvent is published #22316
    • ๐Ÿ›  Fix dead link url and name of the STS download link #22274
    • Clarify locations inside and outside the jar from which properties are loaded #22265
    • ๐Ÿ“„ Rename NoneOfNestedConditions to NoneNestedConditions in example docs #22247
    • ๐Ÿ“‡ Update metadata for WebFlux time and date-time properties to offer iso-offset as a suggested value #22174
    • โž• Add package info for org.springframework.boot.autoconfigure.elasticsearch.rest #22173
    • โšก๏ธ Update layers.idx file example in docs #22152

    โฌ†๏ธ ๐Ÿ”จ Dependency Upgrades

    • โฌ†๏ธ Upgrade to Selenium HtmlUnit 2.43.1 #22937
    • โฌ†๏ธ Upgrade to Micrometer 1.5.4 #22936
    • โฌ†๏ธ Upgrade to Flyway 6.5.4 #22935
    • โฌ†๏ธ Upgrade to Spring HATEOAS 1.2.0-M1 #22893
    • โฌ†๏ธ Upgrade to Spring Batch 4.3.0-M2 #22892
    • โฌ†๏ธ Upgrade to Versions Maven Plugin 2.8.1 #22884
    • โฌ†๏ธ Upgrade to Selenium HtmlUnit 2.43.0 #22883
    • โฌ†๏ธ Upgrade to Pooled JMS 1.1.2 #22882
    • โฌ†๏ธ Upgrade to Maven Resources Plugin 3.2.0 #22881
    • ๐Ÿš€ Upgrade to Lettuce 5.3.3.RELEASE #22880
    • โฌ†๏ธ Upgrade to Kotlin Coroutines 1.3.8 #22879
    • โฌ†๏ธ Upgrade to HtmlUnit 2.43.0 #22878
    • โฌ†๏ธ Upgrade to Hibernate 5.4.20.Final #22877
    • โฌ†๏ธ Upgrade to Dropwizard Metrics 4.1.12.1 #22876
    • ๐Ÿš€ Upgrade to Dependency Management Plugin 1.0.10.RELEASE #22875
    • โฌ†๏ธ Upgrade to Mockito 3.4.6 #22838
    • โฌ†๏ธ Upgrade to Tomcat 9.0.37 #22818
    • โฌ†๏ธ Upgrade to SQLite JDBC 3.32.3.2 #22817
    • ๐Ÿš€ Upgrade to Spring HATEOAS 1.1.1.RELEASE #22816
    • โฌ†๏ธ Upgrade to Solr 8.5.2 #22815
    • โฌ†๏ธ Upgrade to SendGrid 4.6.3 #22814
    • โฌ†๏ธ Upgrade to Netty 4.1.51.Final #22812
    • โฌ†๏ธ Upgrade to MySQL 8.0.21 #22811
    • โฌ†๏ธ Upgrade to MongoDB 4.1.0 #22810
    • โฌ†๏ธ Upgrade to Micrometer 1.5.3 #22809
    • โฌ†๏ธ Upgrade to Maven War Plugin 3.3.1 #22808
    • โฌ†๏ธ Upgrade to MariaDB 2.6.2 #22807
    • โฌ†๏ธ Upgrade to Liquibase 3.10.2 #22806
    • โฌ†๏ธ Upgrade to Spring AMQP 2.3.0-M2 #22761
    • โฌ†๏ธ Upgrade to RSocket 1.1.0-M1 #22751
    • โฌ†๏ธ Upgrade to Spring Kafka 2.6.0-M1 #22730
    • โฌ†๏ธ Upgrade to Spring Integration 5.4.0-M2 #22729
    • โฌ†๏ธ Upgrade to Couchbase Client 3.0.7 #22688
    • ๐Ÿ”’ Upgrade to Spring Security 5.4.0-RC1 #22668
    • โฌ†๏ธ Upgrade to Reactor 2020.0.0-M2 #22667
    • โฌ†๏ธ Upgrade to Elasticsearch 7.8.1 #22648
    • โฌ†๏ธ Upgrade to Spring Data 2020.0.0-M2 #22647
    • โฌ†๏ธ Upgrade to Spring Framework 5.3.0-M2 #22640
    • โฌ†๏ธ Upgrade to Groovy 2.5.13 #22527
    • โฌ†๏ธ Upgrade to R2DBC Arabba-SR6 #22395
    • โฌ†๏ธ Upgrade to Infinispan 11.0.1.Final #22286
    • โฌ†๏ธ Upgrade to Maven Shade Plugin 3.2.4 #22228

    ๐Ÿฑ โค๏ธ Contributors

    ๐Ÿš€ We'd like to thank all the contributors who worked on this release!