搞事情?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详情,三个分支有如下三方面的改进:

  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官方是认真的,但你能认真起来吗?歪果仁,这是周末唉,你们不用休息的吗?疫情期间在家办公就这么任性?

相关推荐:
目录
相关文章
|
10月前
|
XML Java Nacos
Spring Boot 整合Nacos 版本兼容适配 史上最详细文档
本文介绍SpringBoot整合Nacos的完整流程,涵盖Nacos下载安装、配置中心与服务发现集成、版本兼容性问题及实战配置。重点解决SpringBoot 3.3.0与Nacos版本适配难题,推荐使用Spring Cloud Alibaba方案,并提供项目开源地址供参考学习。
|
11月前
|
Cloud Native Java API
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
1757 0
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
3279 17
Spring Boot 两种部署到服务器的方式
|
前端开发 JavaScript Java
springboot图书馆管理系统前后端分离版本
springboot图书馆管理系统前后端分离版本
305 12
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
787 0
|
Java Maven Spring
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
这篇文章介绍了在IntelliJ IDEA社区版中创建Spring Boot项目的三种方法,特别强调了第三种方法的详细步骤。
17136 0
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
986 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
1328 2
|
druid Java Maven