Spring Boot v2.3.0.RELEASE Release Notes

Release Date: 2020-05-15 // 21 days ago
  • 🍱 ⭐ New Features

    • ⚡️ Update properties migrator to run on deprecated properties with warn level as well #21425
    • Provide more extensible constructors on UndertowServletWebServer and UndertowWebServer #21391
    • ➕ Add redis sentinel password property #21353
    • 🔧 Auto-configure a LifecycleProcessor with a configurable timeout per shutdown phase #21347
    • ↔ Integrate web server graceful shutdown into the application context's lifecycle processing #21325
    • 👌 Improve backwards compatibility of ErrorAttributes and DefaultErrorAttributes #21324
    • Align logback's behavior with log4j2 when getting a logger that doesn't exist #21292
    • 👉 Use CNB creator all-in-one lifecycle #21273
    • ⚡️ Optimize StringSequence.startsWith #21259
    • 🚀 Deregister JDBC drivers during undeploy of a war deployment #21221
    • ➕ Add Period converter support #21136
    • 👌 Improve binding performance when using a large number of property sources #20625
    • ➕ Add @WebServiceClientTest annotation that can be used when testing SOAP clients #17274

    🍱 🐞 Bug Fixes

    • CLI distribution is missing read rights #21451
    • Custom converters cannot be used when creating endpoint-related beans due to eager initialization triggered by ServletEndpointRegistrar #21444
    • Different actuator management server port changes response on errors #21428
    • 🐎 Performance regression between RC1 and latest snapshots with large amount of configuration properties #21416
    • Dependency exclusions declared in spring-boot-dependencies have no effect when using Gradle 6 #21350
    • 0️⃣ Unclear default for 'server.tomcat.use-relative-redirects' #21343
    • ⚠ CreateBootStartScripts causes a warning to be logged with Gradle 6.4 #21341
    • When a request is active, Undertow prevents the JVM from exiting #21327
    • ✅ When using log4j2 log4j2-test.* files are not detected #21323
    • Classpath wildcards cannot be used with Java 11 or above #21321
    • 🔧 Implementation attributes are missing from Maven shade transformer configuration in spring-boot-starter-parent #21304
    • The @ActiveProfiles annotation no longer overrides those defined in property files #21302
    • Layertools list and extract commands ignore empty layers #21301
    • 0️⃣ Binder @DefaultValue does not work with PropertyEditor converters #21294
    • 🔧 developmentOnly configuration excludes jar files from fat jar #21288
    • 🐳 Connection fails when DOCKER_HOST set to local socket #21173
    • Environment variable that does not follow guidelines for use of _ is still successfully bound if another property source contains a property that is bound to the same target #14479

    📔 Documentation

    • 🛠 Fix capitalization of Testcontainers in Howto docs #21417
    • 🔧 Document use case of splitting auto-configuration and starter #21367
    • 📚 Align TestRestTemplate Javadoc with documentation #21364
    • 🛠 Fix typo for includeLayerTools #21310
    • 🛠 Fix duplicate slashes in URL links #21108
    • ⚡️ Update link to new Spring Security docs location #21040
    • ✂ Remove version number from author section of the documentation #20934
    • ➕ Add more context to the Kubernetes container lifecycle documentation #20932
    • Document that graceful shutdown with Tomcat requires Tomcat 9.0.33 or later #20886
    • ➕ Add a testcontainers section in the reference docs #20734
    • ✂ Remove packages from the javadoc that are not user-facing #20517

    ⬆️ 🔨 Dependency Upgrades

    • ⬆️ Upgrade to RSocket 1.0.0 #21422
    • ⬆️ Upgrade to Xmlunit2 2.7.0 #21419
    • ⬆️ Upgrade to Tomcat 9.0.35 #21415
    • ⬆️ Upgrade to SQLite JDBC 3.31.1 #21414
    • ⬆️ Upgrade to Selenium HtmlUnit 2.40.0 #21413
    • ⬆️ Upgrade to Prometheus PushGateway 0.9.0 #21412
    • ⬆️ Upgrade to MongoDB 4.0.3 #21411
    • ⬆️ Upgrade to Micrometer 1.5.1 #21410
    • ⬆️ Upgrade to Maven Assembly Plugin 3.3.0 #21409
    • ⬆️ Upgrade to Kotlin Coroutines 1.3.6 #21408
    • ⬆️ Upgrade to jOOQ 3.13.2 #21407
    • ⬆️ Upgrade to Johnzon 1.2.5 #21406
    • ⬆️ Upgrade to Jedis 3.3.0 #21405
    • ⬆️ Upgrade to Infinispan 10.1.8.Final #21404
    • ⬆️ Upgrade to HtmlUnit 2.40.0 #21403
    • ⬆️ Upgrade to HikariCP 3.4.5 #21402
    • ⬆️ Upgrade to Hibernate Validator 6.1.5.Final #21401
    • ⬆️ Upgrade to Hibernate 5.4.15.Final #21400
    • ⬆️ Upgrade to Dropwizard Metrics 4.1.7 #21399
    • ⬆️ Upgrade to Couchbase Client 3.0.4 #21398
    • ⬆️ Upgrade to Cassandra Driver 4.6.1 #21397
    • ⬆️ Upgrade to AssertJ 3.16.1 #21396
    • 🚀 Upgrade to Spring Kafka 2.5.0.RELEASE #21387
    • 🚀 Upgrade to Spring Session Dragonfruit-RELEASE #21386
    • 🚀 Upgrade to Spring Integration 5.3.0.RELEASE #21385
    • 🚀 Upgrade to Spring HATEOAS 1.1.0.RELEASE #21384
    • 🚀 Upgrade to Spring Data Neumann-RELEASE #21383
    • ⬆️ Upgrade to Testcontainers 1.14.1 #21378
    • 🚀 Upgrade to Spring Ldap 2.3.3.RELEASE #21352
    • 🚀 Upgrade to Spring Security 5.3.2.RELEASE #21349

    🍱 ❤️ Contributors

    🚀 We'd like to thank all the contributors who worked on this release!


Previous changes from v2.3.0.RC1

  • 🍱 ⭐ New Features

    • ➕ Add InputStreamSourceToByteArrayConverter #21285
    • 🔧 Restrict wildcard pattern support for configuration files #21217
    • 🔧 Provide a property to disable configuration of the default servlet #21214
    • 👍 Allow project dependencies to be assigned to layers by their coordinates #21207
    • 👻 Throw exception if spring.config.location uses classpath*: #21175
    • 👍 Best effort support for Hazelcast 4 #21169
    • 🔧 Create ReactorNettyHttpClientMapper for configuring HttpClient #21135
    • Avoid recompiling pattern in Handler#canonicalize #21103
    • Provide an RSocketMessageHandlerCustomizer to allow customizing of the RSocketMessageHandler #21081
    • Harmonize Service Level Agreement to Service Level Objectives #21076
    • Fail operations when JarFile is closed #21072
    • 👌 Improve property name in thrown Micrometer ValidationException #21069
    • 👌 Improve compatibility of launch script by replacing use of seq with a bash native loop #21068
    • 🔄 Change default builder image from cloudfoundry/cnb to Paketo #21066
    • ➕ Add dependency management for the Wavefront SDK #21065
    • 👌 Support square bracket notation profiles properties #21006
    • 👌 Improve Elasticsearch RestClient customization capabilities #20994
    • ✂ Remove deprecated configuration properties #20991
    • 0️⃣ Default management endpoint error path should honor server.error.include-* properties #20989
    • ➕ Add support for customizing Spring Session's cookie serializer #20961
    • ➕ Add support for NewRelicClientProvider #20908
    • ✂ Remove plugin management for exec-maven-plugin #20883
    • 👉 Use YAML compatible classpath.idx format #20861
    • 👉 Use a more compact layers.idx format #20860
    • Ensure empty layers are written to the index file #20858
    • 🔧 Harmonize naming of Elasticsearch auto-configuration classes #20857
    • 🔦 Expose Prometheus#histogramFlavor property #20853
    • 🔦 Expose Elastic's pipeline and indexDateSeparator properties #20852
    • 🔦 Expose AppOptics#floorTime property #20850
    • 🗄 Deprecate PushRegistryConfig#numThreads #20845
    • Migrate ServiceLevelAgreementBoundary from Long to Double #20837
    • 🔦 Expose Graphite's graphiteTagsEnabled property #20834
    • Tolerate breaking change to IsolationLevel in kafka-clients 2.5 #20811
    • 👉 Use WavefrontSender to export metrics to Wavefront #20810
    • 👍 Allow easy activation of ISO-by-default date and time binding for Spring MVC #20579
    • 0️⃣ Disable error message on default error page unless explicitly enabled #20505
    • 🔧 Enable transaction auto-configuration when using @DataMongoTest and there is a MongoTransactionManager bean #20182
    • 🔧 Rework ErrorController now that getErrorPath() is unused and server.error.path must be used to configure the error path #19844
    • 👍 Allow to configure Cassandra's request throttling #19674
    • 🚀 Provide a condition for detecting war deployments #19421
    • 👍 Allow @AutoConfigurationPackage to specify the base packages that should be registered #19023
    • Help users to register filters that require error or async dispatch with the correct dispatcher types #18953
    • Enable users to provide custom time and datetime formats for MVC and WebFlux type conversion #18772
    • 👌 Improve handling of cancelled requests when publishing WebClient metrics #18444
    • Autoconfigure ReactiveGridFsTemplate with MongoProperties.getGridFsDatabase() #18284
    • 🔧 Automatically create a developmentOnly configuration for use with DevTools #16599

    🍱 🐞 Bug Fixes

    • Hitting Readiness and Liveness endpoints throws NPE #21211
    • JarFiles are being left open #21127
    • 🏗 Building a layered jar results in deprecation warnings as some configurations will no longer be resolvable in Gradle 7 #21112
    • 👀 PortInUseException can be thrown when server address is wrong #21105
    • ✅ Test classes annotated with @SpringBootTest with different args attributes share a context when they should not #21102
    • 🤡 MockitoPostProcessor can trigger early initialization of factory beans #21090
    • 🔒 Fat jars cause classloading problems with JDK11 and Security Manager #21074
    • WelcomePageHandlerMapping does not honor CORS #21071
    • 👀 PortInUseException thrown when Netty does not have the right to use configured port #21053
    • 🔧 spring.config.additional-location is ignored when spring.config.location is configured #21050
    • Nested object is not initialized if no matching property is defined with constructor binding #21049
    • ConditionalOnAvailableEndpoint does not deal with dashed IDs #21047
    • 🏗 Homebrew and Scoop definitions for non-snapshot builds link to wrong repository on repo.spring.io #21034
    • Endpoint exposure patterns do not work with dashed IDs #21023
    • KafkaClientMetrics is applied to a newly created producer rather than an existing one #21008
    • Embedded database initial failed for setting empty spring.database.url #21004
    • UndertowCompressionConfigurer fails on invalid Media Types #20957
    • Ensure consistent and correct attributes on files added to fat archives #20927
    • 0️⃣ Default for spring.kafka.listener.missing-topics-fatal is no longer aligned with Spring Kafka's default #20919
    • 0️⃣ Use of new DefaultResourceLoader() is dangerous as it captures the thread context classloader at the time of the call #20900
    • Application fails to start due to missing WebFluxProperties bean when using @EnableWebFlux #20891
    • Properties files in subdirectories are not loaded when one file is empty #20873
    • Layer index file is malformed when file in jar contains a space #20827
    • @SpringBootTest does not work when @activeprofiles contains a comma #19537

    📔 Documentation

    • ✨ Enhance Database initialization how to guide #21119
    • ➕ Add "Health as Gauge" how-to documentation #21092
    • 🛠 Fix link to R2DBC Query in docs #21079
    • 🏗 Maven plugin examples for build-image command line properties are incorrect #21078
    • 🔧 Relocate section on configuring DevTools' file system watcher as it isn't specific to remote applications #21075
    • 🛠 Fix anchors in links to Maven and Gradle plugin docs #21033
    • 🔗 Links to CLI binaries are broken for non-snapshot builds #21030
    • Document relaxed binding from environment variables #21028
    • Document devtool property file profile restrictions #21026
    • 📚 Documentation: Dockerfile example does not match documented default jar layers #21020
    • 🔧 Deprecate getters and setters for deprecated configuration properties consistently #21017
    • ➕ Add reference to gRPC starter #20966
    • 👉 Make it more obvious that Jolokia does not work with a WebFlux app #20964
    • ➕ Add reference to Mule 4 starter #20915
    • ➕ Added package-info to org.springframework.boot.buildpack.platform.docker.ssl #20913
    • 🛠 Fix typo in Adding Active Profiles #20909
    • 📚 Update documentation about endpoint enablement to reflect behaviour of @ConditionalOnAvailableEndpoint #20897
    • 📚 Don't use monospacing in documentation headings #20875
    • Document fat-jar index files #20859
    • ➕ Add reference to XChange starter #20830
    • 📚 Name generated PDF documentation files after the subproject #20829
    • 🗄 Deprecate support for Bitronix #20823
    • ➕ Add reference to quickfixj spring boot starter #20819
    • 🔗 Link to the Maven Plugin's documentation is broken #20818
    • ➕ Add formatting instructions for the buildSrc module #20806
    • Document how to initialize the database when using R2DBC #20524
    • 🏗 Document how to build images when behind an HTTP proxy #19984
    • 📚 Move Maven-specific content in reference guide to dedicated documentation #19165

    ⬆️ 🔨 Dependency Upgrades

    • ⬆️ Upgrade to Undertow 2.1.0.Final #21278
    • ⬆️ Upgrade to SAAJ Impl 1.5.2 #21277
    • ⬆️ Upgrade to Jetty EL 8.5.54 #21276
    • ⬆️ Upgrade to Hazelcast 3.12.7 #21275
    • ⬆️ Upgrade to Byte Buddy 1.10.10 #21274
    • ⬆️ Upgrade to Flyway 6.4.1 #21269
    • ⬆️ Upgrade to WebJars Locator Core 0.45 #21255
    • ⬆️ Upgrade to Tomcat 9.0.34 #21254
    • 🚀 Upgrade to Spring WS 3.0.9.RELEASE #21253
    • ⬆️ Upgrade to SendGrid 4.4.8 #21252
    • ⬆️ Upgrade to Selenium HtmlUnit 2.39.0 #21251
    • ⬆️ Upgrade to Rabbit AMQP Client 5.9.0 #21250
    • ⬆️ Upgrade to OkHttp3 3.14.8 #21249
    • ⬆️ Upgrade to Netty 4.1.49.Final #21248
    • ⬆️ Upgrade to Neo4j OGM 3.2.11 #21247
    • ⬆️ Upgrade to MySQL 8.0.20 #21246
    • ⬆️ Upgrade to MongoDB 4.0.2 #21245
    • ⬆️ Upgrade to Log4j2 2.13.2 #21244
    • ⬆️ Upgrade to Liquibase 3.8.9 #21243
    • ⬆️ Upgrade to Kotlin 1.3.72 #21242
    • ⬆️ Upgrade to JUnit Jupiter 5.6.2 #21241
    • ⬆️ Upgrade to Jetty 9.4.28.v20200408 #21240
    • ⬆️ Upgrade to Jackson Bom 2.11.0 #21239
    • ⬆️ Upgrade to InfluxDB Java 2.18 #21238
    • ⬆️ Upgrade to Infinispan 10.1.6.Final #21237
    • ⬆️ Upgrade to HtmlUnit 2.39.1 #21236
    • ⬆️ Upgrade to HikariCP 3.4.3 #21235
    • ⬆️ Upgrade to Hibernate Validator 6.1.4.Final #21234
    • ⬆️ Upgrade to Hibernate 5.4.14.Final #21233
    • ⬆️ Upgrade to Groovy 2.5.11 #21232
    • ⬆️ Upgrade to Glassfish JAXB 2.3.3 #21231
    • ⬆️ Upgrade to Flatten Maven Plugin 1.2.2 #21229
    • ⬆️ Upgrade to Dropwizard Metrics 4.1.6 #21228
    • ⬆️ Upgrade to Couchbase Client 3.0.3 #21227
    • ⬆️ Upgrade to Cassandra Driver 4.6.0 #21226
    • ⬆️ Upgrade to Caffeine 2.8.2 #21225
    • ⬆️ Upgrade to Artemis 2.12.0 #21224
    • ⬆️ Upgrade to AppEngine SDK 1.9.80 #21223
    • ⬆️ Upgrade to Spring HATEOAS 1.1.0.RC1 #21210
    • ⬆️ Upgrade to RSocket 1.0.0-RC7 #21208
    • ⬆️ Upgrade to Apache Solr 8.5.1 #21206
    • 🚀 Upgrade to Lettuce 5.3.0.RELEASE #21096
    • ⬆️ Upgrade to Kafka 2.5.0 #21032
    • ⬆️ Upgrade to Spring Kafka 2.5.0.RC1 #20953
    • ⬆️ Upgrade to Spring Integration 5.3.0.RC1 #20951
    • ⬆️ Upgrade to Spring Data Neumann-RC2 #20949
    • ⬆️ Upgrade to Spring AMQP 2.2.6 #20947
    • ⬆️ Upgrade to Spring Framework 5.2.6 #20945
    • ⬆️ Upgrade to Reactor Bom Dysprosium-SR7 #20943
    • ⬆️ Upgrade to Testcontainers 1.14.0 #20936
    • ⬆️ Upgrade to Micrometer 1.5.0 #20833

    🍱 ❤️ Contributors

    🚀 We'd like to thank all the contributors who worked on this release!