史上最全SpringBoot2.4版本特性介绍(全⽂英译版)Spring Boot v2.4
注意在2.4以后版本已经取消release后缀
Spring Boot 2.4 Release Notes
Upgrading from Spring Boot 2.3
Versioning scheme change
从2.4开始,Spring Boot采⽤了the new Spring versioning scheme——这意味着你应该从 2.3.5.RELEASE开始更新l ⽂件中的Spring Boot版本到2.4.0.
JUnit 5’s Vintage Engine Removed from spring-boot-starter-test
如果您升级到Spring Boot 2.4,并看到诸如org.junit.Test的JUnit类的测试编译错误。这可能是因为JUnit 5的⽼式引擎已经从spring-boot-starter-test中移除。⽼式引擎允许⽤JUnit 4编写的测试由JUnit 5运⾏。如果您不想将您的测试迁移到JUnit 5,并且希望继续使⽤JUnit 4,那么添加⼀个对⽼式引擎的依赖,如下⾯的Maven⽰例所⽰:
如果你正在使⽤Gradle,等价的配置如下⾯的例⼦所⽰:
Config File Processing (application properties and YAML files)
Spring Boot 2.4改变了处理application.properties和l ⽂件的处理⽅式。如果你只有⼀个
简单的application.properties 或者⽂件,你的升级应该是⽆缝的。但是,如果您有⼀个更复杂的设置(带有特定于概要⽂件的属性,或者概要⽂件激活属性),那么如果您想使⽤新特性,您可能需要做some changes。
如果你只想要Spring Boot 2.3兼容的逻辑,你可以在你的application.properties或者l⽂件设置⼀个fig.use-legacy-processing属性为true。
Config Data Imports
通过fig.location和fig.import(在本版本中引⼊)明确指定配置位置,如果⽂件或⽂件夹不存在,将不再静默失败。如果您想导⼊⼀个位置,但如果不到它也不介意跳过它,那么现在应该在它前⾯加上optional:
例如, fig.location=optional:/etc/config/application.properties,如果它存在将从/etc/config/导⼊application.properties⽂件,并且如果它不存在将跳过。
如果你想把所有的位置都当作optional ,你可以设置-not-found=ignore在SpringApplication.setDefaultProperties(…)或在系统/环境变量设置。
Embedded database detection
嵌⼊式数据库逻辑经过了改进,只有在内存中才认为数据库是嵌⼊式的。如果在H2、HSQL和Derby中使⽤基于⽂件的持久性或服务器模式,则此更改有两个后果:
(1)sa⽤户名不再设置。如果您依赖于该⾏为,则需要设置 spring.datasource.username=sa在您的配置。
(2)这样的数据库将不再在启动时被初始化,因为它们不再被认为是嵌⼊式的。您可以像往常⼀样使⽤pring.datasource.initialization-mode 调优它。
Logback Configuration Properties
特定于Logback的Logging properties已被重命名,以反映它们是特定于Logback的事实。以前的名称已被弃⽤。
下⾯Spring Boot properties已经被改变:
lling-file-name → llingpolicy.file-name-pattern
logging.file.clean-history-on-start → llingpolicy.clean-history-on-startspringboot框架的作用
logging.file.max-size → llingpolicy.max-file-size
al-size-cap → al-size-cap
logging.file.max-history → llingpolicy.max-history
以及它们映射到的系统环境属性:
ROLLING_FILE_NAME_PATTERN → LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN
LOG_FILE_CLEAN_HISTORY_ON_START → LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START
LOG_FILE_MAX_SIZE → LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE
LOG_FILE_TOTAL_SIZE_CAP → LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP
LOG_FILE_MAX_HISTORY → LOGBACK_ROLLINGPOLICY_MAX_HISTORY
Default Servlet Registration
Spring Boot 2.4将不再注册servlet容器提供的DefaultServlet。在⼤多数应⽤程序中,它不被使⽤,因为Spring MVC的DispatcherServlet 是唯⼀需要的servlet。
如果您发现仍然需要默认的servlet,你可以设置ister-default-servlet=true。
HTTP traces no longer include cookie headers by default
默认情况下,Cookie请求头和Set-Cookie响应头不再包含在HTTP traces 。为了恢复Spring Boot 2.3的⾏为,设置
Undertow Path on Forward
默认情况下,当请求被转发时,Undertow保留原始的请求URL。这个版本覆盖了Undertow默认值以符合Servlet规范。之前的Undertow默认⾏为可以通过设置属性server.undertow.preserve-path-on-forward=true来回复。
Neo4j
这个版本对Neo4j的⽀持进⾏了重⼤的调整。在4j.*中有许多属性已经移除,同时也移除了对Neo4j OGM的⽀持。
Neo4j驱动程序的配置是通过4j.*命名空间完成的。尽管URI和基本⾝份验证仍然以⼀种弃⽤的⽅式⽀持。
想要了解更多关于这⼀变化以及Spring Data Neo4j 6带来了什么,check the documentation.
Elasticsearch RestClient
低级Elasticsearch RestClient bean将不再由Spring Boot⾃动配置。RestHighLevelClient bean仍然是⾃动配置的。
⼤多数⽤户不需要使⽤低级客户端,也不应该受到此更改的影响。
R2DBC
R2DBC的核⼼基础设施已经转移到Spring框架,并提供了⼀个新的 spring-r2dbc 模块。如果您正在使⽤这个基础设施,请确保将已弃⽤的访问迁移到新的核⼼⽀持。
Flyway
Flyway 7的升级包括了回调顺序的some changes。这将是⼀个突破性的变化,任何⼈依赖注册订单,我们⽀持通过@Order和Ordered。
如果您正在使⽤Flyway 5,请确保在升级到Spring Boot 2.4之前升级到Flyway 6,因为Flyway只为⼀个特性版本保留模式升级。
Removal of Plugin Management for Flatten Maven Plugin
Spring Boot的构建不再使⽤Flatten Maven插件(flatten-maven-plugin),它的插件管理也被删除了。如果你依赖Spring Boot的托管版本,你应该添加你⾃⼰的插件管理。
Version management for exec-maven-plugin
exec-maven-plugin的版本管理已经被删除。如果您正在使⽤这个插件,请确保在您⾃⼰的pluginManagement中指定⼀个版本。
Spring Boot Gradle Plugin
⽤于Spring Boot Gradle Plugin bootJar任务的DSL已经更新,以便可以使⽤属性<String>来配置主类。如果你⽬前使⽤的是maininclassname,例如:
你应该改变它在 mainClass:
Metrics export in integration tests
@SpringBootTest不再配置可⽤的监控系统,只提供内存中的MeterRegistry。如果您将度量作为集成测试的⼀部分导出,那么您可以将
@AutoConfigureMetrics添加到您的测试中,以恢复以前的⾏为。
Deprecations from Spring Boot 2.2 and 2.3
在Spring Boot 2.2中弃⽤的代码在Spring Boot 2.4中删除了,这反映了Spring Boot发⾏版的兼容性策略-release compatibility policy。在Spring Boot 2.3中弃⽤的代码仍然保留,并计划在Spring Boot 2.5中删除。
New and Noteworthy
Tip Check the configuration changelog for a complete overview of the changes in configuration.
Spring Framework 5.3
Spring Boot 2.4使⽤Spring Framework 5.3。Spring Framework wiki中有⼀个what’s new section部分详细介绍了这个新版本。
Spring Data 2020.0
Spring Boot 2.4包含了Spring Data发布系列的2020.0版本(代码名为Ockham)。有关发布细节,请参阅Spring Data wiki。
Neo4j
这个版本带来了对反应性存储库的⽀持,并依赖于⼀个单独的Neo4j驱动程序的⾃动配置。因此,现在可以在有或没有Spring Data.的情况下使⽤Neo4j。
Neo4j的健康检查使⽤驱动程序,只要配置了Neo4j驱动程序,就可以进⾏健康检查。
如果您希望将@Transactional与响应式访问⼀起使⽤,您现在需要⾃⼰配置Neo4jReactiveTransactionManager bean。
R2DBC
R2dbcEntityTemplate可以通过实体简化响应式R2DBC的使⽤
Java 15 Support
Spring Boot 2.4现在完全⽀持Java 15(并针对Java 15进⾏了测试)。最低⽀持版本仍然是Java 8。
Custom property name support
使⽤构造函数绑定时,属性的名称派⽣⾃参数名称。如果您想使⽤java 保留关键字,这可能会成为⼀个问题。对于这种情况,现在可以使⽤
@Name注释,类似于:
上⾯的⽰例展⽰了⼀个 sample.import property。
Layered jar enabled by default
这个版本启⽤分层jar,并默认包含layertools。这应该可以使⽤开箱即⽤的构建包提⾼⽣成映像的效率,并让您受益于该特性当crafting
custom Dockerfile。
Importing Additional Application Config
只要您没有设置fig.use-legacy-processing = true。您现在可以直接从主应⽤程序导⼊额外的属性和application.properties或者l.
您可以使⽤fig.import 属性来指定⼀个或多个应该导⼊到Spring环境中的附加配置⽂件。更多细节请参见参考指南的这⼀部分-this section。
我们已经出版a short blog解释我们为什么要做出这些改变。
Volume Mounted Config Directory Trees
有关完整的⽰例,请参见updated reference documentation.
默认情况下,从配置树加载的属性的末尾会修剪换⾏符。
Importing Config Files That Have no File Extension
⼀些云平台只允许您在没有⽂件扩展名的情况下卷挂载⽂件。如果有这样的约束,现在就可以通过向S
pring Boot提供关于内容类型的提⽰来导⼊这些⽂件。例如,fig.import=/etc/myconfig[.yaml]将/etc/myconfig加载为YAML.。
Origin Chains
使⽤新的getParent()⽅法更新了Origin接⼝。这允许我们提供⼀个完整的来源链,可以准确地显⽰⼀个项⽬的来源。
例如,您可以使⽤fig.import在你的application.properties来导⼊第⼆个⽂件。从第⼆个⽂件加载的属性的起源将有⼀个指向原始导⼊声明的⽗元素。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论