大家周末愉快啊,Spring Boot 2.3.5 没发布几天,你看,还是 1 周前发布的:
昨天又有粉丝留言说 Spring Boot 2.4.0 已经发布了:
我了个去,栈长赶紧跑到 Spring Boot 官网看了下,果然 2.4.0 了,我顿时傻眼了,又得写文章了,看来我消息还是稍微有点滞后了…
Spring Boot 2.4.0 这么快就发布了,又是周末来给大家推送,我印象中都是周末推……
Spring Boot 更新也太快了,很多同学表示学不来了,学不动了。学不动也要学啊,不然就要被淘汰了,Java技术栈所有 Spring Boot 教程和示例源码都上传到 Github 了,欢迎 Star:
https://github.com/javastacks/spring-boot-best-practice
好吧,还是例行公事,接下来栈长带大家来解读下 Spring Boot 2.4.0 到底更新了什么鬼?
切记!!!
这个版本不要轻易升级!!!
下面注意仔细看完哦。。。
一、支持 Java 15Spring Boot 2.4.0 支持 Java 15 了,同时向下兼容 Java 11 和 Java 8。
二、依赖升级Spring Boot 2.4.0 升级了一些主要的 Spring 项目:
Spring AMQP 2.3
Spring Batch 4.3
Spring Data 2020.0
Spring Framework 5.3
Spring HATEOAS 1.2
Spring Integration 5.4
Spring Kafka 2.6
Spring Retry 1.3
Spring Security 5.4
Spring Session 2020.0
另外,还尽可能升级了一些第三方库到最新稳定版本:
Artemis 2.13
AssertJ 3.18
Cassandra Driver 4.7
Elasticsearch 7.9
Flyway 7
Jersey 2.31
JUnit 5.7
Liquibase 3.10
Lettuce 6.0
Micrometer 1.6
Mockito 3.4
MongoDB 4.1
Oracle Database 19.7
Reactor 2020.0
RSocket 1.1
Undertow 2.2
……
三、配置改进 1、改进配置文件的处理方式Spring Boot 2.4 改进了处理 application.properties 和 application.yml 配置文件的方式。更新后的逻辑旨在简化和合理化外部配置的加载方式,但有些参数的组合形式却得到了限制,升级请谨慎。
如果你的应用工程只有一个简单的 application.properties 或 application.yml 文件,则可以进行无缝升级到 Spring Boot 2.4.0。
但是,如果你的配置较为复杂,比如说有指定 profile 的参数,或者有基于 profile 激活的参数,要使用新功能就需要进行一些更改。
更多细节可参考:
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Config-Data-Migration-Guide
如果你想继续使用 Spring Boot 2.3 的配置逻辑,也可以通过在 application.properties 或者 application.yml 配置文件中添加以下参数:
spring.config.use-legacy-processing = true
2、导入配置参数改进通过配置参数 spring.config.location 和 spring.config.import 来指定或者导入配置文件时,如果配置文件不存在,现在不是只能默默地失败了,可以通过添加 optional: 前缀来标识它是可选的。
比如我们从 /etc/config/application.properties 指定配置文件,如果这个文件不存在,系统就会跳过它。
spring.config.location=optional:/etc/config/application.properties
如果你想将所有指定的配置文件都默认为可选的,可以通过 SpringApplication.setDefaultProperties(…) 来设置
spring.config.on-location-not-found=ignore 这个参数,或者将它设置在系统环境变量中。
3、支持导入配置树新版本的 spring.config.import 属性还可以用于导入配置树,通过与 Kubernetes 一起使用,配置树是提供键/值对的另一种方法,每一个键值/对都在其自己的文件中声明,文件名是键,文件内容就是值。
另外,从配置树导入的参数默认会带一个换行符。
详细的参考:
具体的配置上的细节暂时没有时间详细研究了,后面有机会再详细介绍一篇,关注公众号Java技术栈第一时间推送。
四、新增启动端点Spring Boot 2.4.0 添加了一个新的启动端点,用来显示应用启动有关的详细信息,比如可以帮助我们来诊断启动时间比预期更长的 Spring Beans。
这个功能建立在 Spring Framwork 5.3 最近添加的应用程序启动跟踪特性的基础上,感兴趣的可以在 Spring 框架文档中阅读有关该功能的更多信息。
五、新增起源链(Origin Chains)Origin 接口更新了,使用了全新的 getParent() 方法,这样就可以提供完整的参数起源链,以准确显示某一项参数的来源。