学无止境?本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈、MyBatis、JVM、中间件等小而美的专栏供以免费学习。关注公众号【BAT的乌托邦】逐个击破,深入掌握,拒绝浅尝辄止。

前言

各位好,我是A哥(YourBatman)。今天是2020-07-25,上午我正从https://start.spring.io准备down一个工程下来的时候,打开页面发现默认选中的Spring Boot版本号是2.3.2



并非我刻意的去找到这个变化,而是由于我昨天 down下来的工程使用的Spring Boot版本是2.3.1,印象还在,所以今天一下子就发现了差异。

既然升级了(虽然是小版本号),那就去官方楼一眼呗。不看不知道,一看还真让发现些内容:Spring Boot在同一天(2020-07-25)一口气发布了三个版本,这是要搞事情啊?

小贴士:本文所有时间若未做特殊说明,指的均是北京时间

正文

Spring Boot目前还处于Active活跃的分支共有三个:



因此就在今天,同一天里Spring Boot对它的这三条线做了更新:

  • Spring Boot 2.3.1 -> Spring Boot 2.3.2
  • Spring Boot 2.2.8 -> Spring Boot 2.2.9
  • Spring Boot 2.1.15 -> Spring Boot 2.1.16



此次发版,距离上次正式发版(不区分分支)已足足有44天之久。

有哪些升级?

参考github上的Release详情,三个分支有如下三方面的改进:

  1. 修复bug
  2. 文档同步
  3. 升级依赖

修复bug

小版本号的升级,最重要的使命就是修复bug,这是它存在的意义。针对这三个版本,各自的bug修复总数如下:

  • 2.3.2:34个。遥遥领先
  • 2.2.9:10个。
  • 2.1.16:1个。

能发现规律吧,版本越新,bug越多,这是符合常理的。另外,从小版本号里能知道:2.1.x版本都修复16次bug了,而2.3.x才第2次修复,正处于bug井喷阶段呢。所以一味的追新的话,还需谨慎哈。

也许你会吐槽,Spring Boot这啥编码水平,咋这么多bug?其实非也,个数虽多(其实也还好),但每一个都是非严重bug,影响甚微,无需大惊小怪。

另外,从bug的原因上来看,不少bug是各个版本都有的共性问题。比如2.1.x版本那个唯一的bug,其它两个版本均有:

文档同步

此part用于对文档上的改变做出一些说明,比如文字描述错误、排班不正确等等。举例本次的一个修复:

修复前:



修复后:



不得不说,这老外还挺较真(挺仔细)的。

升级依赖

由于是小版本的升级,因此对应的依赖也是小版本升级。举例:

  • Tomcat升级到9.0.37
  • Spring Framework升级到5.2.8(此版本4天前发布)

值得注意的是,拿Spring Framework的升级举例:Spring Boot的2.2.x和2.3.x都是升级到了5.2.8版本,而Spring Boot的2.1.x分支依赖的是Spring Framework 5.1.17版本哦。


除此之外,Spring Boot它的最新版本,也就是2.3.2里还新增了3个新特性,了解一下:

  1. 改进 Kubernates Liveness/Readiness 健康指标和探针配置
  2. 添加运行镜像选项用于Docker镜像构建
  3. 增加对reactive Elasticsearch的健康检查

小贴士:小版本号的升级是可以新增这种很小的功能点的,但不允许新增大功能

三个版本核心依赖的区别

Spring Boot目前活跃的分支有3个,也就是这三个主线版本。那么他们三在核心依赖上有啥区别呢?A哥特意翻资料帮你整理了一下,绘制如下表:

说明:因为表格兼容性不太好,所以我以图片方式展示

关于1.5.x和2.0.x版本

这两个分支已经是古董分支了:

stale中文意思:不新鲜的,老掉牙的,没有新意的

它们早已寿终正寝,最后一个版本和发布时间为:

  • 1.5.22.RELEASE,2019.08
  • 2.0.9.RELEASE,2019.04

有意思的是,2.0.x版本的生命周期非常的短暂,几乎刚好一年(2018.3 - 2019.4)。但是不可否认2.0.x版本是具有划时代意义的,在1.5.x的基础上垮了一大步,上了一个大台阶。

所以如果你的项目还在使用这两个版本,特别是1.5.x,那么尽快升级吧。官方推荐的是使用最新的2.3.x分支,这也是当前最为活跃的分支。

小贴士:1.5.x升级到2.x.x属于阻断式升级,需要十分谨慎

总结

Spring Boot作为微服务、云原生开发的基础设施,每个Java开发者都应该理解它、跟上它、学习它,才得以保证自己不掉队,不被后浪拍死。

但是,如此之快的更新速度,Spring官方是认真的,但你能认真起来吗?歪果仁,这是周末唉,你们不用休息的吗?疫情期间在家办公就这么任性?

相关推荐:

搞事情?Spring Boot今天一口气发布三个版本的更多相关文章

  1. 3步轻松搞定Spring Boot缓存

    作者:谭朝红 前言 本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序的数据缓存功能.在Spring Boot应用程序中,我们可以通过Spring Caching来快速 ...

  2. Java Spring Boot VS .NetCore (三)Ioc容器处理

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  3. Spring Boot应用启动的三种方式

    Spring Boot应用HelloWorld的三种启动方式: 项目的创建可以在http://start.spring.io/网站中进行项目的创建. 首先项目结构: 1.  通过main方法的形式启动 ...

  4. 一文搞定Spring Boot + Vue 项目在Linux Mysql环境的部署(强烈建议收藏)

    本文介绍Spring Boot.Vue .Vue Element编写的项目,在Linux下的部署,系统采用Mysql数据库.按照本文进行项目部署,不迷路. 1. 前言 典型的软件开发,经过" ...

  5. 【转载】Spring boot学习记录(三)-启动原理解析

    前言:本系列文章非本人原创,转自:http://tengj.top/2017/04/24/springboot0/ 正文 我们开发任何一个Spring Boot项目,都会用到如下的启动类 @Sprin ...

  6. spring boot 之热部署(三)

    热部署:当发现程序修改时自动启动应用程序. spring boot使用的是spring-boot-devtools是一个为开发者服务的一个模块.其原理用了classLoader 其中一个加载不变的类, ...

  7. Java框架spring Boot学习笔记(三):Controller的使用

    Controller注解介绍 @Controller:处理http请求 @RestController: Spirng4之后新加的注解,其实是一个组合注解等同于@ResponseBody和@Contr ...

  8. Spring Boot 项目实战(三)集成 Swagger 及 JavaMelody

    一.前言 上篇介绍了 Logback 的集成过程,总体已经达到了基本可用的项目结构.本篇主要介绍两个常用工具,接口文档工具 Swagger .项目监控工具 JavaMelody 的集成步骤. 二.Sw ...

  9. Spring Boot 快速搭建的三种方式

    方式一:http://start.spring.io/ 打开浏览器,在地址栏中输入http://start.spring.io/ 如下图:  点击generate project 然后就会有一个zip ...

随机推荐

  1. USACO 2020 OPEN Silver Problem 3. The Moo Particle

    题意: 解法: 首先给出在本题中连通和连通块的定义: 连通: 两个粒子a,b连通,当且仅当ax≤bx.ay≤by或者bx≤ax.by≤ay. 如图,A,B两粒子是连通的,而C.D不是. 可以看出,本题 ...

  2. 2020年全新web前端学习路线图,学完就业20K!

    第一阶段:HTML5+css 配套学习视频: 前端小白零基础入门HTML5+CSS3 第二阶段:移动web网页开发 移动web进阶教程 第三阶段:JavaScript网页编程 前端与移动开发基础入门到 ...

  3. Python3笔记012 - 3.3 条件表达式

    第3章 流程控制语句 3.3 条件表达式 在程序开发中,经常会根据表达式的结果,有条件地进行赋值. # 返回两个数中较大的数 a = 10 b = 6 if a>b: r = a else: r ...

  4. js中取el表达式问题

    例如常用的${pageContext.request.contextPath} 如果需要在js中用到 分两种情况: 如果js是直接写在jsp中 可以直接写el表达式 例如: 如果js是写在外部,jsp ...

  5. POJ3057 Evacuation 二分图匹配+最短路

    POJ3057 Evacuation 二分图匹配+最短路 题目描述 Fires can be disastrous, especially when a fire breaks out in a ro ...

  6. 洛谷CF997A:Convert to Ones

    温馨提示: 本题适合先思考再看题解,相信各位神犇都能轻轻松松过掉它. 题目链接: https://www.luogu.com.cn/problem/CF997A 分析: 首先要读懂题,to ones, ...

  7. docker自动化部署前端项目实战一

    docker自动化部署前端项目实战一 本文适用于个人项目,如博客.静态文档,不涉及后台数据交互,以部署文档为例. 思路 利用服务器node脚本,监听github仓库webhook push事件触发po ...

  8. Re5ilio 5ync:资源神器

    文章目录 #0x0 简单的介绍 #0x1 安装使用 #0x10 下载 #0x11 安装 #0x12 升级pro权限 #0x13 开始添加资源 #0x14 后续 一定要小心哦!! #0x0 简单的介绍 ...

  9. 攻防世界/强网杯 2019-supersqli

    靶场地址:https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=1&id=5417&page= ...

  10. java 面向对象(二十一):属性的赋值顺序

    * ①默认初始化 * ②显式初始化/⑤在代码块中赋值 * ③构造器中初始化 * ④有了对象以后,可以通过"对象.属性"或"对象.方法"的方式,进行赋值 * * ...