各位大佬,想请教下从 Java8 升级到 Java 17 ,SpringBoot2.x 升级到 SpringBoot3.x 的建议

详细描述
之前一直用的 Java8 + SpringBoot2.x 的组合,单体和微服务都搞过,最近有一个新项目,可以允许我自由选择技术栈。
项目不复杂,是个单体应用,用到的东西都算中规中矩:
Spring 框架:
SpringBoot, SpringData JPA, SpringSecurity
数据库:
MySQL/PostgreSQL, Redis
其他集成:
Kafka, Quartz

我的想法
这次算是个机会,有机会能接触新的东西,而且业务简单,所以想尝试下 Java8 + SpringBoot3.x ,不过这个项目是我一个人搞,万一有啥问题,都得我一个人自己解决,我担心会有些怪坑。
想问下老哥们的建议,有参考的文章博客都行,感谢大家!

17 没意义,不如直接 21

直接上 jdk21

我刚想问这个哈哈哈哈,直接上 21 是不是更好,一步到胃,接触新的东西多么,之前学 Java8 ,看了本《 Java 8 in Action 》就差不多熟悉了,8 -> 21 有什么比较友好的资料么

SpringBoot3.x 最低要求 JDK 是 17……

直接上 21 就可以,没必要用 17 。上 spring 3 还能玩 graalvm

兄弟这个我知道,所以省略号是什么意思😂

”所以想尝试下 Java8 + SpringBoot3.x“ 这句话写错了,不好意思,

#6 我看到你说想尝试 java 8 + springboot 3.x ,理解错了,哈哈

JDK17+SpringBoot3 吧。JDK 升级不大,有些需要换包。Springboot 如果自己写过 Starter 那么参考官方变动内容修改。

最重要的是学会用 sealed interface/class + record 进行业务建模控制流多用 switch pattern matching 精简代码

#7 如果是新项目,只要处理好 jdk 版本的问题,其他的包依赖都不是什么大问题,直接 springboot 3.x + jdk 21

17 先把项目完成,同时避免太新有些库不支持。做完后升级 21 。一🐟两吃

jdk 升级没什么大坑,几个 sun 和 javax 的包路径变了,springboot 升级就坑比较多了

分开搞。第一步,先升级 jdk 17 + SpringBoot 2.x ,这一步可能遇到的就是 jdk 升级的一些问题,最好不要升级语言特性,没意义,如果可能,SpringBoot 升级到 2.7.x ,可以最大减轻后续升级的负担第二步,升级 SpringBoot 3.x ,这一步遇到的问题更多的是 SpringBoot 的不兼容升级,从 2.7.x 升级上来阻力可以说是最低第三步,升级 SpringBoot 3.2+ + JDK 21 , 开启 Virtual Thread ,充分享受性能红利。我个人的建议是:放弃语法特性升级,关注 JVM 升级即可,这样可以给自己留下最大的退路

#14 OP 是新项目,一步到位就好了

直接用 jdk21 吧,java8 的旧项目升级会比较多坑,新项目直接用没什么坑。

你这更折腾人

这么说吧 SpringBoot 2.x 非商业版已经结束维护了。新项目直接上 21 + spring boot3.3 吧, 3.2 马上也结束维护了

#15 没有 DDL 的项目当然可以。有 DDL 的项目当然还是从稳健出发,假如真有解决不了的问题,是不是能够快速的回退到团队熟悉的技术栈上。

DDL 比较宽松,业务上的问题应该也没有,简单的单体,登陆注册权限( SpringSecurity ),增删改查( JPA ),加一些定时任务,还有发发邮件之类的,都是以前 jdk8+springboot2.x 做了无数遍的东西。

我个人的体会:如果,你学习,不管是在 GitHub 下的代码还是别地下的代码,基本上跑 JDK11 都会报错,只有用 JDK8然后,你自己做项目,当然了,spring boot3.x 最低的支持也是 JDK17 ,这个没问题,你跑 JDK21当然,像我,JDK8 、11 、17 、21 我都安装了,看代码选的最多的是 JDK8 ,在 idea 可以选择的