学无止境?本文已被 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. 【秒懂Java】【第1章_初识Java】01_编程语言

    各位小伙伴们好哇!从今日起,我将开始更新<秒懂Java>系列文章,从0开始讲解Java的方方面面,后面也将推出配套的视频版,欢迎大家保持关注! 我会尽力办到:在保证通俗易懂的同时,不丢失知 ...

  2. DOM-BOM-EVENT(2)

    2.获取DOM元素的方法 2.1.getElement系列 documentElementById 通过id获取元素 <div id="box"></div> ...

  3. php抽奖功能

    在项目开发中经常会遇到花钱抽奖类型的需求.但是老板总是担心用户用小钱抽到大奖.这样会导致项目亏损.下边这段代码可以有效制止抽奖项目亏钱. 个人奖池: 语言:thinkphp redis mysql 表 ...

  4. CentOS下安装python3环境及pypy环境

    安装前基础环境 1. win7虚拟机CentOS7.6系统 2. 网络环境通过NAT方式 3. 已经配置到yum仓库并系统自带有python2.7 安装前准备 1. python3.6.5源码包:ht ...

  5. 洛谷 P4047 [JSOI2010]部落划分

    这道题其实就是无线通讯网的双倍经验啦,只是在输出的时候不同罢了.还是一样的\(kruskal\)算法,但是在求的时候,应该在\(now=n-k+1\)的时候结束.本来到\(n-k\)就行了的,但是由于 ...

  6. Kafka 可视化监控和管理 UI工具评估

    以下内容,来自网络资料整理和个人安装使用结果.后续会持续更新

  7. 什么是X-UA-Compatible?X-UA-Compatible的作用

    代码 <meta http-eqiv="X-UA-Compatible" content="ie=edge"> 什么是X-UA-Compatible ...

  8. centOS7:创建的新用户如何获得写权限

    要在root用户下使用 1.新建用户 adduser testuser //新建testuser 用户 passwd testuser //给testuser 用户设置密码 2.赋予root权限 方法 ...

  9. Shein一面(视频面)07.07

    应聘职位:Java工程师 时长:30min 面经: Spring讲一下 SpringAOP用到什么设计模式 JVM包括什么 运行时数据区包括什么 什么时候入栈,出栈 Sychronized和可重入锁区 ...

  10. python入门007

    一.深浅copy 浅拷贝:是把原列表第一层的内存地址完全拷贝一份给新列表.即只能保证对原列表中第一层地址(不可变类型)的改操作不受影响,涉及到原列表中第二层地址(可变类型)的改操作时,原列表变,新列表 ...