搞事情?Spring Boot今天一口气发布三个版本
学无止境?本文已被 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详情,三个分支都有如下三方面的改进:
- 修复bug
- 文档同步
- 升级依赖
修复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个新特性,了解一下:
- 改进 Kubernates Liveness/Readiness 健康指标和探针配置
- 添加运行镜像选项用于Docker镜像构建
- 增加对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官方是认真的,但你能认真起来吗?歪果仁,这是周末唉,你们不用休息的吗?疫情期间在家办公就这么任性?
相关推荐:
- Fastjson到了说再见的时候了
- 1. 初识Jackson -- 世界上最好的JSON库
- 2. 妈呀,Jackson原来是这样写JSON的
- 3. 懂了这些,方敢在简历上说会用Jackson写JSON
搞事情?Spring Boot今天一口气发布三个版本的更多相关文章
- 3步轻松搞定Spring Boot缓存
作者:谭朝红 前言 本次内容主要介绍基于Ehcache 3.0来快速实现Spring Boot应用程序的数据缓存功能.在Spring Boot应用程序中,我们可以通过Spring Caching来快速 ...
- Java Spring Boot VS .NetCore (三)Ioc容器处理
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- Spring Boot应用启动的三种方式
Spring Boot应用HelloWorld的三种启动方式: 项目的创建可以在http://start.spring.io/网站中进行项目的创建. 首先项目结构: 1. 通过main方法的形式启动 ...
- 一文搞定Spring Boot + Vue 项目在Linux Mysql环境的部署(强烈建议收藏)
本文介绍Spring Boot.Vue .Vue Element编写的项目,在Linux下的部署,系统采用Mysql数据库.按照本文进行项目部署,不迷路. 1. 前言 典型的软件开发,经过" ...
- 【转载】Spring boot学习记录(三)-启动原理解析
前言:本系列文章非本人原创,转自:http://tengj.top/2017/04/24/springboot0/ 正文 我们开发任何一个Spring Boot项目,都会用到如下的启动类 @Sprin ...
- spring boot 之热部署(三)
热部署:当发现程序修改时自动启动应用程序. spring boot使用的是spring-boot-devtools是一个为开发者服务的一个模块.其原理用了classLoader 其中一个加载不变的类, ...
- Java框架spring Boot学习笔记(三):Controller的使用
Controller注解介绍 @Controller:处理http请求 @RestController: Spirng4之后新加的注解,其实是一个组合注解等同于@ResponseBody和@Contr ...
- Spring Boot 项目实战(三)集成 Swagger 及 JavaMelody
一.前言 上篇介绍了 Logback 的集成过程,总体已经达到了基本可用的项目结构.本篇主要介绍两个常用工具,接口文档工具 Swagger .项目监控工具 JavaMelody 的集成步骤. 二.Sw ...
- Spring Boot 快速搭建的三种方式
方式一:http://start.spring.io/ 打开浏览器,在地址栏中输入http://start.spring.io/ 如下图: 点击generate project 然后就会有一个zip ...
随机推荐
- RS232/485通信方式 保存和加载时数据的处理
RS232/485通信方式 数据以RS232/485方式通信时,以0xA5作为开始码,以0xAE作为结束码.在开始码和结束码之间的0xA5, 0xAA, 0xAE数据需要进行转码. PC端发送数据时将 ...
- JavaScript基础CallBack函数(015)
前面提到,函数对象是可以作为参数传递给另一函数的,这时,作为参数的函数如果在内部被执行,那么它就是个回调函数(Callback): function writeCode(callback) { // ...
- MySQL 字符串索引优化方案
字符串建立索引的优化 1. 建立前缀索引 假设建立一个支持邮箱登录的用户表,对于邮件字段来说,可以有以下几种建立索引的方式: 直接对整个字符串建立索引 alter table SUser add in ...
- Java面向对象(一)类和对象
面向过程和面向对象的区别 面向过程,强调的是功能行为,是将实现一个功能的步骤编写在一个函数中,以函数为最小单位. 面向对象,是将需要的功能封装进一个对象中,使一个对象具有很多的功能特征,以类/对象为最 ...
- linux就该这么学 第一天学习笔记
题外话 在每天的网上冲浪中,一次无意间的点击,发现了linux就该这么学的网站,然后就看了一晚上,当时还是学生的我特别想要参加培训,可是碍于眼前的经济状况,只得将这个想法深深的藏在了心里,并加了一下网 ...
- 初探RabbitMQ消息队列
SpringBoot 是为了简化 Spring 应用的创建.运行.调试.部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖 ...
- Redis 6.0 访问控制列表ACL说明
背景 在Redis6.0之前的版本中,登陆Redis Server只需要输入密码(前提配置了密码 requirepass )即可,不需要输入用户名,而且密码也是明文配置到配置文件中,安全性不高.并且应 ...
- www.215wd.com
www.215wd.com 传奇销售系统 QQ:1479528000
- Scala 基础(六):Scala变量 (三) 标识符
1 标识符概念 1) Scala 对各种变量.方法.函数等命名时使用的字符序列称为标识符 2) 凡是自己可以起名字的地方都叫标识符 2 标识符的命名规则 Scala中的标识符声明,基本和Java是一致 ...
- Flask 基础组件(三):路由系统
1. 常见路由 @app.route('/user/<username>') @app.route('/post/<int:post_id>') @app.route('/po ...