Spring Boot v2.4.0 Release Notes

Release Date: 2020-11-12 // over 4 years ago
  • 🍱 ⭐ New Features

    • Provide a property or environment variable to enable DevTools' restarter irrespective of how the application was launched #21424

    🍱 🐞 Bug Fixes

    • 💻 Using last modified for static resources in reproducible archives and images causes unwanted browser caching #24099
    • 🔧 BootJar's afterResolve action causes resolution failures with the Versions plugin due to configurations being copied and made resolvable #24072
    • 📇 Configuration metadata annotation processor may use the wrong accessor for boolean properties #24059
    • When using Tomcat, key and trust store passwords set via javax.net.ssl system properties are overwritten with null when Spring Boot's equivalent properties have not been set #24053
    • Config files no longer loaded if they contain a hidden path element #24043
    • @DataJpaTest using H2 with schema.sql and spring.datasource.schema-username fails #24024
    • "java.lang.IllegalStateException: zip file closed" when call JarFileWrapper.stream() of spring-boot-loader #24017
    • JdbcStoreTypeConfiguration picks transaction of primary data source when Quartz data source is not the primary data source #24015
    • ✅ TestTypeExcludeFilter does not implement hashCode and equals as required by its super-class #24013
    • 🔧 Our auto-configuration should not use @PostConstruct as it's ignored on Java 11+ without a dependency on jakarta-annotation-api #24010
    • @MockBean fields are not reset for JUnit 5 @Nested tests using @WebMvcTest #23984
    • 🔊 ClasspathLoggingApplicationListener logs the classpath as unknown on Java 11 and later #23138

    📔 Documentation

    • 🛠 Fix link to Flyway callback docs #24122
    • 🛠 Fix deprecation warnings in javadoc comments #24120
    • Provide more details about overriding SpringPhysicalNamingStrategy's case insensitive flag #24062
    • 📚 Clarify documentation regarding relaxed binding of environment variables #24033
    • ✨ Enhance spring.datasource.initialization-mode property description #24030
    • Recommend disabling context path redirects when using proxy-terminated SSL with Tomcat #24026
    • 👌 Improve Spring Session back off documentation #24019
    • ✅ Clarify the javadoc of AutoConfigureTestDatabase to make it clearer that it only replaces the main DataSource #24007
    • Recommend that bean definitions provide as much type information as possible #24005
    • 🌲 logging.file.* properties flagged with error level while they are still honoured #23995
    • ➕ Add missing default value for enum-based configuration properties #23992
    • 📇 Configuration property replacement metadata for spring.resources.cache.cachecontrol.stale-while-revalidate is invalid #23980

    ⬆️ 🔨 Dependency Upgrades

    • ⬆️ Upgrade to AppEngine SDK 1.9.83 #24082
    • ⬆️ Upgrade to AssertJ 3.18.1 #24126
    • ⬆️ Upgrade to Byte Buddy 1.10.18 #24083
    • ⬆️ Upgrade to Couchbase Client 3.0.10 #24084
    • ⬆️ Upgrade to Hibernate 5.4.23.Final #24085
    • ⬆️ Upgrade to Infinispan 11.0.5.Final #24127
    • ⬆️ Upgrade to Jetty 9.4.34.v20201102 #24047
    • ⬆️ Upgrade to jOOQ 3.14.3 #24128
    • ⬆️ Upgrade to Kotlin Coroutines 1.4.1 #24087
    • ⬆️ Upgrade to Micrometer 1.6.1 #24051
    • ⬆️ Upgrade to Netty 4.1.54.Final #24129
    • ⬆️ Upgrade to Nimbus JOSE JWT 9.1.2 #24088
    • ⬆️ Upgrade to Pooled JMS 1.2.1 #24089
    • ⬆️ Upgrade to Reactor 2020.0.1 #24110
    • ⬆️ Upgrade to SendGrid 4.6.8 #24090
    • ⬆️ Upgrade to Spring AMQP 2.3.1 #24073
    • ⬆️ Upgrade to Spring Data 2020.0.1 #24036
    • ⬆️ Upgrade to Spring Framework 5.3.1 #24035
    • ⬆️ Upgrade to Spring HATEOAS 1.2.1 #24091
    • ⬆️ Upgrade to Spring Integration 5.4.1 #24097
    • ⬆️ Upgrade to Spring Kafka 2.6.3 #24074
    • ⬆️ Upgrade to Spring Session 2020.0.1 #24098

    🍱 ❤️ Contributors

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


Previous changes from v2.4.0-RC1

  • 🍱 ⭐ New Features

    • Provide dependency management for jOOQ's new jooq-kotlin module #23964
    • 🔧 Provide a configuration property for the driverClassName of the Liquibase DataSource #23958
    • 🌐 Move spring.resources.* properties to spring.web.resources.* #23917
    • 🔧 Provide configuration properties for setting the logging charsets #23827
    • ➕ Add auto-trimming support to configtree property sources #23826
    • ➕ Add configuration properties for RabbitMQ's batch listener config #23766
    • 🔦 Expose BootBuildImage's cleanCache property as a command-line option #23753
    • 👍 Allow a SAML2 relying party registration's assertion consumer service binding and location to be configured via application properties #23746
    • 🔒 Rename spring.security.saml2.relyingparty.*.relying-party-entity-id to spring.security.saml2.relyingparty.*.entityId #23745
    • ➕ Add a command line option for image.cleanCache when building with Maven #23719
    • 👍 Allow a SAML2 relying party registration's decryption X509 credentials to be configured via application properties #23705
    • ➕ Add support for CNB platform API 0.4 #23692
    • 👍 Allow TestPropertyValues.of to take a Map source #23685
    • 🌲 Rationalize Logback logging properties #23609
    • 🏗 When building with Maven, include project dependencies in the application layer by default #23463
    • 🔧 Provide properties to configure WebFlux's locale and how it's resolved #23449
    • ✂ Remove skipping of spring-boot-* projects when determining what is eligible for DevTools restart #23158
    • 👉 Make @PropertyMapping support nested annotations #23146
    • 🔄 Change favicon default StaticResourceLocation #23126
    • ⚡️ Update TextResourceOrigin to show the source jar of a ClasspathResource #23019
    • 👉 Use stricter multi-document properties separator logic #22963
    • 👌 Support wildcard configtree imports #22958
    • 👌 Support Gradle's configuration cache with Gradle 6.7 and later #22922
    • 🔧 Provide a property for configuring the base path of the Actuator's endpoints when using WebFlux #22906
    • 👍 Allow proxied @SpyBeans to be used with Mockito's inline mock maker #22416
    • 👻 Fail with exception if management.server.address is set but actuator is on the same port #22187
    • 🔧 Don't adapt RandomPropertySource to ConfigurationPropertySource #21659
    • 🔧 Auto-configuration of MethodValidationPostProcessor prevents the use of @Validated on final @ConfigurationProperties classes #21454
    • 👍 Allow @WebListener ServletContextListeners to programmatically add servlets and filters #18303

    🍱 🐞 Bug Fixes

    • 🔧 Configuration property annotation processor does not notice overriding getter methods #23970
    • 📇 Incremental compilation does not keep metadata for inner classes #23960
    • 🏗 Maven plugin build-image creator step fails in Bitbucket pipelines #23957
    • 🔧 Datasource initialisation with JPA schema configured in deferred mode happens asynchronously #23933
    • 📇 ConfigurationMetadataAnnotationProcessor can add duplicate entries #23916
    • Jar entries are duplicated in BOOT-INF/lib with layered jars and Maven #23819
    • ✅ HttpEncodingAutoConfiguration is not added to the WebMvcTest slice #23817
    • 📜 Wildcard locations for configs causes files to be parsed multiple times on k8s #23815
    • 👻 Exception thrown from /actuator/env endpoint when spring.config.import=configtree:xxxx is used #23805
    • 🌲 Exceptions when initializing logging system are not shown #23802
    • excludeProjectDependencies() does not work when customising a jar's layers with Gradle #23763
    • 🔧 A reactive web application using Spring Session uses server.servlet.session.timeout to configure its session timeout #23752
    • ⏱ server.servlet.session.timeout not in effect when using Jetty starter without jakarta.annotation and javax.annotation #23751
    • If the JVM is killed while refresh is in progress, the shutdown hook does not close the context #23744
    • Hang on AbstractEntityManagerFactoryBean.getNativeEntityManagerFactory() #23735
    • BootJar.getConfigurations() should not be public API #23732
    • Renaming of CompositeMeterRegistryAutoConfiguration breaks code that was excluding it or referring to it from @AutoConfigureBefore/After #23724
    • 👍 Databases that support embedded and non-embedded modes are always detected as embedded #23693
    • @MockBean fields are not reset for JUnit 5 @Nested tests #12470

    📔 Documentation

    • ✂ Remove version elements from Maven plugin documentation #23931
    • 📚 Polish HTTP/2 Cleartext documentation #23820
    • 🔧 Document how to enable h2c via programmatic configuration #23816
    • Note that using LiveReload requires Devtools restart to be enabled #23765
    • 🛠 Fix links to Spring Framework documentation #23737
    • 📚 Maven layers documentation is incomplete #23731
    • ➕ Add reference to JobRunr Spring Boot starter #23725
    • 💅 Polish titles on configblocks #23722
    • 🔧 Document how to override attributes already specified in Maven plugin configuration #23718
    • 📄 Block selection in docs only works in single page HTML #23709

    ⬆️ 🔨 Dependency Upgrades

    • ⬆️ Upgrade to AssertJ 3.18.0 #23888
    • ⬆️ Upgrade to Commons Pool2 2.9.0 #23889
    • ⬆️ Upgrade to Dropwizard Metrics 4.1.14 #23890
    • ⬆️ Upgrade to Elasticsearch 7.9.3 #23891
    • ⬆️ Upgrade to Flyway 7.1.1 #23932
    • ⬆️ Upgrade to Jetty 9.4.33.v20201020 #23893
    • ⬆️ Upgrade to jOOQ 3.14.0 #23894
    • ⬆️ Upgrade to Kotlin Coroutines 1.4.0 #23913
    • 🚀 Upgrade to Lettuce 6.0.1.RELEASE #23923
    • ⬆️ Upgrade to Lombok 1.18.16 #23895
    • ⬆️ Upgrade to Micrometer 1.6.0 #23525
    • ⬆️ Upgrade to Mockito 3.6.0 #23924
    • ⬆️ Upgrade to MongoDB 4.1.1 #23897
    • ⬆️ Upgrade to MSSQL JDBC 8.4.1.jre8 #23742
    • ⬆️ Upgrade to MySQL 8.0.22 #23898
    • ⬆️ Upgrade to Netty 4.1.53.Final #23899
    • ⬆️ Upgrade to Nimbus JOSE JWT 9.1.1 #23901
    • ⬆️ Upgrade to OAuth2 OIDC SDK 8.23.1 #23900
    • ⬆️ Upgrade to Oracle Database 19.8.0.0 #23902
    • ⬆️ Upgrade to Postgresql 42.2.18 #23903
    • ⬆️ Upgrade to R2DBC Bom Arabba-SR8 #23904
    • ⬆️ Upgrade to Rabbit AMQP Client 5.10.0 #23905
    • ⬆️ Upgrade to Reactor 2020.0.0 #23771
    • ⬆️ Upgrade to RSocket 1.1.0 #23912
    • ⬆️ Upgrade to SendGrid 4.6.7 #23906
    • ⬆️ Upgrade to Spring AMQP 2.3.0 #23785
    • ⬆️ Upgrade to Spring Batch 4.3.0 #23963
    • ⬆️ Upgrade to Spring Data 2020.0.0 #23778
    • ⬆️ Upgrade to Spring Framework 5.3.0 #23774
    • ⬆️ Upgrade to Spring HATEOAS 1.2.0 #23779
    • ⬆️ Upgrade to Spring Integration 5.4.0 #23781
    • ⬆️ Upgrade to Spring Session 2020.0.0 #23788

    🍱 ❤️ Contributors

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