大家周末愉快啊,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 15

Spring 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 一起使用,配置树是提供键/值对的另一种方法,每一个键值/对都在其自己的文件中声明,文件名是键,文件内容就是值。

另外,从配置树导入的参数默认会带一个换行符。

详细的参考:

https://docs.spring.io/spring-boot/docs/2.4.0/reference/html/spring-boot-features.html#boot-features-external-config-files-configtree

具体的配置上的细节暂时没有时间详细研究了,后面有机会再详细介绍一篇,关注公众号Java技术栈第一时间推送。

四、新增启动端点

Spring Boot 2.4.0 添加了一个新的启动端点,用来显示应用启动有关的详细信息,比如可以帮助我们来诊断启动时间比预期更长的 Spring Beans。

这个功能建立在 Spring Framwork 5.3 最近添加的应用程序启动跟踪特性的基础上,感兴趣的可以在 Spring 框架文档中阅读有关该功能的更多信息。

https://docs.spring.io/spring-framework/docs/5.3.x/reference/html/core.html#context-functionality-startup

五、新增起源链(Origin Chains)

Origin 接口更新了,使用了全新的 getParent() 方法,这样就可以提供完整的参数起源链,以准确显示某一项参数的来源。

比如你在 application.properties 配置文件中使用 spring.config.import 来导入第二个配置文件的参数,从第二个配置文件加载的参数的 Origin 将具有一个指向原始导入声明的父级。

说白了就是可以看到参数从哪里导进来的,可以通过 actuator/env 或者 actuator/configprops 端点来查看与之相关的输出信息,这里暂不详细研究了,后面有机会再详细介绍一篇,关注公众号Java技术栈第一时间推送。

六、Docker 支持升级

1、镜像发布

Spring Boot Maven 插件的 spring-boot:build-image 指令和 Gradle 插件的 bootBuildImage 任务现在可以直接发布 Docker 镜像到 Docker 注册中心了。

2、授权机制

当使用 Spring Boot 构建时,可以为构建器或者运行镜像使用私有授权的 Docker 私有注册中心,支持用户名/密码认证以及基于 Token 机制认证。

更多详细的配置可以参考对应的插件文档:

Maven:

https://docs.spring.io/spring-boot/docs/2.4.0/maven-plugin/reference/htmlsingle/#build-image-example-publish

Gradle:

https://docs.spring.io/spring-boot/docs/2.4.0/gradle-plugin/reference/htmlsingle/#build-image-example-publish

七、移除了 JUnit 5’s Vintage 引擎

Spring Boot 2.4.0 从 spring-boot-starter-test 中移除了 JUnit 5 Vintage 引擎,JUnit 5 可以通过 vintage 引擎来运行 JUnit 4 编写的测试用例,说白了就是兼容 JUnit 4 呗。

如果你不想迁移测试用例到 JUnit 5 而继续使用 JUnit 4,添加以下 Maven 依赖即可:

<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency>

以下为对应的 Gradle 配置:

testImplementation("org.junit.vintage:junit-vintage-engine") {
exclude group: "org.hamcrest", module: "hamcrest-core"
}

八、其他更新

Spring Boot 2.4.0 发布更新说明中还包括了许多其他的更新和改进,比如说在 Spring Boot 2.4.0 中标识了在下个版本中计划废弃的不推荐使用的类和方法等。

以上就是 Spring Boot 2.4.0 的主要变更内容,当然还有许多发布细节,感兴趣的可以研究下这个更新说明:

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.4-Release-Notes

总结

终于写完了,又肝了一个晚上!!

可以看出 Spring Boot 2.4.0 的变更还是蛮大的,特别是在配置文件、配置参数的处理,还有许多框架的重大版本升级。

切记不要轻易升级到这个版本,如需升级,最好是详细看清楚变更内容,做好充分测试,以免年终奖没了。。

关于更多的细节暂时没时间深入研究了,后续栈长有时间再深入研究下,给大家带来更详细的技术文章,关注公众号Java技术栈第一时间推送。

另外,栈长每天都会在朋友圈分享一些技术文章和最新技术资讯,感兴趣的可以加我微信成为我的好友,一起进步、共同学习,微信好友坑位有限哦,快来和我成为好友吧!

如果添加不了或者添加频繁,可以晚点再重试哦,如果好友已满,后续也可以在后台回复 "微信" 获取我的最新微信号。

最后,大家觉得本文有用的话,动动小手,给栈长来个小小的在看、转发呗,原创不易,需要你的鼓励哦~

版权申明:本文系公众号 "Java技术栈" 原创,原创实属不易,转载、引用本文内容请注明出处,禁止抄袭、洗稿,请自重,尊重他人劳动成果和知识产权。

近期热文推荐:

1.Java 15 正式发布, 14 个新特性,刷新你的认知!!

2.终于靠开源项目弄到 IntelliJ IDEA 激活码了,真香!

3.我用 Java 8 写了一段逻辑,同事直呼看不懂,你试试看。。

4.吊打 Tomcat ,Undertow 性能很炸!!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

觉得不错,别忘了随手点赞+转发哦!

Spring Boot 2.4 正式发布,重大调整!!!的更多相关文章

  1. Spring Boot 2.0正式发布,新特性解读

    作者|翟永超 Spring Boot 2.0 来啦,有哪些新特性?升级吗? 写在前面 北京时间 3 月 1 日,经过漫长的等待之后,Spring Boot 2.0 正式发布.作为 Spring 生态中 ...

  2. 重磅:Spring Boot 2.0 正式发布!

    Spring Boot 2.0 正式发布! 2018/03/01最新消息,传得沸沸扬扬的Spring Boot 2.0 正式发布了. 小编去看了下Spring Boot的官网,正式版本已经释放出来了! ...

  3. 业余草分享 Spring Boot 2.0 正式发布的新特性

    就在昨天Spring Boot2.0.0.RELEASE正式发布,今天早上在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误, ...

  4. Spring Boot 2.2 正式发布,大幅性能提升 + Java 13 支持

    之前 Spring Boot 2.2没能按时发布,是由于 Spring Framework 5.2 的发布受阻而推迟.这次随着 Spring Framework 5.2.0 成功发布之后,Spring ...

  5. Spring Boot 2.1.0 已发布,7 个重大更新!

    距离<重磅:Spring Boot 2.0 正式发布!>已经过去大半年了,而 Spring Boot 2.1.0 在 10 月底就发布了,我们来看下 Spring Boot 2.1.0 都 ...

  6. Spring Boot (一)快速入门

    一.关于Spring Boot 在开始了解Spring Boot之前,我们需要先了解一下Spring,因为Spring Boot的诞生和Spring是息息相关的,Spring Boot是Spring发 ...

  7. Spring Boot 非常好的学习资料

    from@https://gitee.com/didispace/SpringBoot-Learning Spring Boot 2.0 新特性学习 简介与概览 Spring Boot 2.0 正式发 ...

  8. Spring Boot 把 Maven 干掉了,拥抱 Gradle!

    在国外某社交网站上有一个关于迁移 Spring Boot 迁移 Maven 至 Gradle 的帖子: 该贴子上也有很多人质疑:Maven 用的好好的,为什么要迁移至 Gradle? 虽然该贴子只是说 ...

  9. Spring Boot 2.3.0正式发布:优雅停机、配置文件位置通配符新特性一览

    当大潮退去,才知道谁在裸泳..关注公众号[BAT的乌托邦]开启专栏式学习,拒绝浅尝辄止.本文 https://www.yourbatman.cn 已收录,里面一并有Spring技术栈.MyBatis. ...

随机推荐

  1. [BJWC 2011]元素

    题目大意: 你有n个二元组(x,y),要求从中任取几个,使得x的值亦或起来不为0,且y之和最大. 题解: 显然是以x来构造线性基的,然而加入元素的个数是有限制的,那当然就是大的先来喽,排个序就OK啦! ...

  2. 每日一题 LeetCode 679. 24点游戏 【递归】【全排列】

    题目链接 https://leetcode-cn.com/problems/24-game/ 题目说明 题解 主要方法:递归 + 全排列 解释说明: 将 4 个数进行组合形成算式,发现除了 (a❈b) ...

  3. Tomcat配置Gizp 客户端使用okHttp3

    找到tomcat 在 server.xml 新增如下配置 <Connector connectionTimeout="20000" port="8088" ...

  4. 怎样学好 java ?

    浅谈Java的学习之路--怎样学好JAVA ?Java - 近10年来计算机软件发展过程中的传奇,其在众多开发者心中的地位就如"屠龙刀"."倚天剑". Java ...

  5. CentOS7克隆多个虚拟机

    VMware+centos7克隆虚拟机 步骤一:打开虚拟机,右键选中已经配置好的虚拟机,选择manage下面的clone选项.这里有一个需要注意的地方,就是虚拟机在启动或者挂起的状态下是不能clone ...

  6. 微信小程序项目wx-store代码详解

    这篇文章会很长,非常长,特别长,无敌长. 真的是挤牙膏般的项目进度,差不多是8月底有开始这个项目的想法,时至今日都1个多月了,抛去频繁的加班时间,王者时间,羽毛球时间...见缝插针的写这个项目,我竟然 ...

  7. 安卓WebSocket使用

    引入jar包: implementation "org.java-websocket:Java-WebSocket:1.4.0"implementation "org.s ...

  8. LeakCanary检测内存泄漏

    内存泄漏原因: 线程造成的内存泄漏 Handler造成的内存泄漏 单例导致内存泄露 静态变量导致内存泄露 非静态内部类导致内存泄露 未取消注册(BroadcastReceiver )或回调导致内存泄露 ...

  9. Spring Boot 学习摘要--关于配置

    date: 2019-12-27 09:00:00 updated: 2019-12-30 13:20:00 Spring Boot 学习摘要--关于配置 学习教程来自:B站 尚硅谷 1. 关于配置 ...

  10. centos6-增加阿里yum源

    1.获取阿里的yum源覆盖本地官方yum源 wget -O /etc/yum.repos.d/CentOS-ali.repo http://mirrors.aliyun.com/repo/Centos ...