首页 > 数据库 > 数据库开发技术 > Springboot3.x升级指南,内附代码
Springboot3.0其实在2022年6月就已经推出了,并且和之前的Springboot2.x的版本有很大的差别,所以如果项目上没有特殊要求,个人不太建议从Springboot2.x的版本升级到Springboot3.x的版本。如果非要升级的话,我们首先要弄清楚一个事,就是Springboot3.x到底有什么新的重要新特性。
升级指南

1、最低支持Java 17。如果要升级到Springboot3.x的话,你的Java SDK版本最低是17才行,所以首先SDK环境上就需要升级,伴随着你Gradle或Maven的版本都需要升级。
2、底层依赖的J2EE迁移到了Jakarta EE 9。这个会造成你升级之后,里面的import包依赖路径会进行大规模的修改,基本上80%以上的Java文件都会修改,这个风险其实就很大。更不要说每次升级,肯定有一些方法在用法上的升级和改变。
3、具体语法的升级。其实第2点提到了一些,升级之后,有些具体包中的语法和方法进都进行了变更:
首先影响比较大的就是整个用法和写法都变了,比如swagger的用法,变化就特别大。
其次还有一些代码,只是用法上有所改变,修改范围小一些,参照代码的提示或者官方文档去对应修改即可,这类影响范围稍微小一些。
再者,还有一些可改可不改的,比如有些写法过时了,IDE上会拿删除线标记在代码上,会强烈推荐你改,但是不改也不影响功能。还有些比如类似于spring注入的写法变更了之类的。
最后呢,有一类最难找也最难判断,因为有些升级了,他有可能把背后的默认值或运行机制给改了,可能需要你在配置文件中去指定才可以,这一类你很难发现,升级之后不报错,也不影响运行,感觉啥事没有。要是测试做的不到位,大多数时候出了问题你才能知道,很难提早发现。要想尽可能避免只能说升级之前,将跨了n个版本的升级日志都结合代码好好调查了一遍,细致的做影响范围分析。这类问题我曾经被坑过2次。。。
4、新特性的加入。这一类根据业务需求去考量,因为升级到springboot3.x后,加入了AOT预编译、Spring Native、虚拟线程等新特性。尤其虚拟线程这,可以结合具体业务需求,看是否某些业务代码需要重写。
示例代码

我在今年5月份(2023年5月)的时候,基于当时最新的springboot3.1.0版本,写了一个springboot的demo工程(项目用IntelliJ IDEA进行的开发,Gradle进行项目编译)。想要学习的小伙伴,请在公众号内回复【springboot3】,即可获得工程下载链接。代码包括如下功能:
启动换Banner
多环境切换配置
国际化
整合Mytatis操作Mysql
整合JPA操作Mysql
JdbcTemplate操作Mysql
整合Redis
缓存数据
session存储
排行榜
订阅发布
整合MongoDB
整合Kafka
整合Swagger3
全局异常处理
整合Thymeleaf
邮件发送
定时器Scheduler
CommandLineRunner初始化资源
获取服务器信息
Junit
雪崩模拟(JUC并发)
阿里stresstester压测

原文作者:极客e家;如有侵权,请联系管理员删除。