
Spring
旧项目采用
Spring boot 1.5和jdk8,新项目则是
Spring boot 2.7与jdk17(之所以没用
Spring boot3,是因为项目立项时
Spring boot2才是主流,jdk也是后来从8改成17的)。在升级过程中,升级jdk相较于升级
Spring boot的大版本,改动要小得多。实际操作下来会发现,主要就是更改几个配置。这其中有两个改动其实在jdk11时就已埋下伏笔,一是模块化将包拆分出去,二是反射调用模块需要权限(到jdk16才开始强制要求)。之后就可以随心所欲地使用以var开头的变量了,Stream api和Optional用起来也更加方便。最多也就是默认的新gc在理论上有所改善,不过都是些简单的小项目,实际上并没有什么差别。总结仅仅把jdk从8升级到17,改动不大,带来的好处也有限。如果是新项目,升级上去会让人感觉好一些;要是维护老项目,升不升其实无所谓。再来说说
Spring boot,它升级大版本时的割裂性比较严重。旧项目基本上没必要升级,因为这样做往往得不偿失。新项目也要视情况而定,
Spring boot3刚推出,很多适配工作可能还没跟上。当年
Spring boot2推出的时候就折腾了很久,结果还是用1.5更顺手。特别是项目如果使用了
Spring cloud,适配就会更慢一步。如果是没有任何负担的纯新项目,那么以
Spring boot3为基础,后续升级小版本也会比较方便。要是已经使用了一些现有组件,那么估计还是
Spring boot2遇到的问题更少一些。
Spring boot2已经达到了一个比较好用的阶段,启动速度不慢,各方面功能也比较齐全。相比之下,
Spring boot3的升级目前来看主要是支持静态编译原生打包,方便docker部署,但如果没有大量部署docker的需求,这些好处可能也没什么用。