咨询贴: Java8 -> Java17, Springboot2.x -> Springboot3.x

31 天前
 Koril

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


详细描述

之前一直用的 Java8 + SpringBoot2.x 的组合,单体和微服务都搞过,最近有一个新项目,可以允许我自由选择技术栈。

项目不复杂,是个单体应用,用到的东西都算中规中矩:

Spring 框架: SpringBoot, SpringData JPA, SpringSecurity

数据库: MySQL/PostgreSQL, Redis

其他集成: Kafka, Quartz


我的想法

这次算是个机会,有机会能接触新的东西,而且业务简单,所以想尝试下 Java8 + SpringBoot3.x ,不过这个项目是我一个人搞,万一有啥问题,都得我一个人自己解决,我担心会有些怪坑。

想问下老哥们的建议,有参考的文章博客都行,感谢大家!

2484 次点击
所在节点    Java
34 条回复
Leviathann
31 天前
17 没意义,不如直接 21
Goooooos
31 天前
直接上 jdk21
Koril
31 天前
@Leviathann 我刚想问这个哈哈哈哈,直接上 21 是不是更好,一步到胃,接触新的东西多么,之前学 Java8 ,看了本《 Java 8 in Action 》就差不多熟悉了,8 -> 21 有什么比较友好的资料么
sumarker
31 天前
SpringBoot3.x 最低要求 JDK 是 17……
Vraw5
31 天前
直接上 21 就可以,没必要用 17 。上 spring 3 还能玩 graalvm
Koril
31 天前
@sumarker 兄弟这个我知道,所以省略号是什么意思😂
Koril
31 天前
”所以想尝试下 Java8 + SpringBoot3.x“ 这句话写错了,不好意思,
@sumarker
sumarker
31 天前
@Koril #6 我看到你说想尝试 java 8 + springboot 3.x ,理解错了,哈哈
clf
31 天前
JDK17+SpringBoot3 吧。JDK 升级不大,有些需要换包。Springboot 如果自己写过 Starter 那么参考官方变动内容修改。
Leviathann
31 天前
@Koril 最重要的是学会用 sealed interface/class + record 进行业务建模
控制流多用 switch pattern matching 精简代码
sumarker
31 天前
@Koril #7 如果是新项目,只要处理好 jdk 版本的问题,其他的包依赖都不是什么大问题,直接 springboot 3.x + jdk 21
ZZ74
31 天前
17 先把项目完成,同时避免太新有些库不支持。做完后升级 21 。一🐟两吃
Akitora
31 天前
jdk 升级没什么大坑,几个 sun 和 javax 的包路径变了,springboot 升级就坑比较多了
yty2012g
31 天前
分开搞。
第一步,先升级 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 升级即可,这样可以给自己留下最大的退路
Goooooos
31 天前
@yty2012g #14 OP 是新项目,一步到位就好了
Yukineko
31 天前
直接用 jdk21 吧,java8 的旧项目升级会比较多坑,新项目直接用没什么坑。
Ayanokouji
31 天前
@yty2012g 你这更折腾人
Ayanokouji
31 天前
这么说吧 SpringBoot 2.x 非商业版已经结束维护了。
新项目直接上 21 + spring boot3.3 吧, 3.2 马上也结束维护了
yty2012g
31 天前
@Goooooos #15 没有 DDL 的项目当然可以。有 DDL 的项目当然还是从稳健出发,假如真有解决不了的问题,是不是能够快速的回退到团队熟悉的技术栈上。
Koril
31 天前
@yty2012g DDL 比较宽松,业务上的问题应该也没有,简单的单体,登陆注册权限( SpringSecurity ),增删改查( JPA ),加一些定时任务,还有发发邮件之类的,都是以前 jdk8+springboot2.x 做了无数遍的东西。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1080178

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX