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
tospring.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!