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

65 天前
 Koril

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


详细描述

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

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

Spring 框架: SpringBoot, SpringData JPA, SpringSecurity

数据库: MySQL/PostgreSQL, Redis

其他集成: Kafka, Quartz


我的想法

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

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

2675 次点击
所在节点    Java
34 条回复
Rust2015
65 天前
我个人的体会:

如果,你学习,不管是在 GitHub 下的代码还是别地下的代码,基本上跑 JDK11 都会报错,只有用 JDK8

然后,你自己做项目,当然了,spring boot3.x 最低的支持也是 JDK17 ,这个没问题,你跑 JDK21

当然,像我,JDK8 、11 、17 、21 我都安装了,看代码选的最多的是 JDK8 ,在 idea 可以选择的
sagaxu
65 天前
8 -> 17, sb2 -> sb3, 换汤不换药,学不到新东西的。

直接试试 Quarkus 和 Vertx 或者 Micronaut ,JDK 尝试一下 GraalVM ,还可以玩一下 AOT 打包成 native image 。

如果还有精力,不妨再试试 Kotlin 写后端,Vertx 中使用 coroutine 非常爽。
chuck1in
65 天前
spring boot 3 最低支持 jdk17
op 你想换个技术栈的话试试 www.mjga.cc 这一套技术栈呢?就是你要的单体应用的选型。
hairoy
64 天前
我的建议是,先升级到 spring boot 3.0.0 和 spring 6.0.0 ,然后再升级到 3.0.final, 再升级到 3.1.0, 再升级到 3.1.final ,依次升级到 3.3.x
newaccount
64 天前
怪坑没有,写法变动挺大的,尤其是 spring security
很多 abstract class 都没了,实现 interface 也变成了实现 bean
不过即使这样也得上啊,没碰过就一直不会啊
cleanery
64 天前
单体简单项目, 直接一步到位搭好框架, 把业务代码迁移过来就好了
flmn
64 天前
java 直接 21 。
如果是在既有项目上 springboot 2->3 ,还是有些需要折腾的。
但是你是新项目啊,大胆的用 springboot 3 吧!
springboot 的好处就是,这么多年的,虽然一直在升级,但是里面的骨子,一直很稳定。
spritecn
64 天前
java17 还是有用的 G1 解决稳定高效, 语法方面 文本块,和 lamda 快捷操作都很有用,springBoot 2.x 蛮好,没必要硬升
Koril
64 天前
@spritecn @flmn @cleanery @newaccount
感谢各位老哥的建议,今天已经用上了 Java 21 + Spring Boot 3.3.4 + Spring Security 6.3.3

登陆注册 jwt 两个钟头就全搞好了,剩下的就是权限划分+业务代码了。

除了语法的些微改变之外,最大的感受就是老项目的那些黄色波浪线全部消失了,因为是独立开发的新项目,终于不用再忍受老项目里,各种手写奇奇怪怪的校验工具类,实现类,加密类了,还有毫无意义的自定义抽象和流程(明明框架全部都有,引用了框架,又不好好使用框架,真是最大的槽点)。

最佳实践 + 整齐划一 + 规范的感觉真好,就像是从瘴气雨林来到了大草原。

我接下来会接着学习 Java 21 的新特性,感谢。

@chuck1in @sagaxu 业余时间我会了解下,之前听说过,感觉蛮高级。
chuck1in
64 天前
@Koril
你是采用的 jwt + cookie 的方式做的身份认证吗?是的话可以根据这个代码做一下对比参考试试看。

https://github.com/ccmjga/mjga-scaffold/tree/main/src/main/java/com/mjga/config/security
Jim2Chen
58 天前
spring3 的话,是建议用 SpringData JPA 还是 mybatis 啊
slomo
54 天前
@Jim2Chen 这个看业务吧,如果是新项目从 0 到 1 ,单表操作 jpa 就行。老项目 sql 太多了没法改,那还是继续 mybatis
Koril
54 天前
@Jim2Chen @slomo SpringBoot 3 对于 JPA 还是 MyBatis 的选型,我感觉区别不大,就看团队对哪个更熟悉了,JPA 的很多特性(不是仅仅是简单的 JpaRepository 的 单表 CRUD )的学习门槛很高,多表的关联,对数据库的设计也很讲究,后期新人维护成本高,我觉得它就是属于那种不会用的人会吐槽到累的,相比之下,MyBatis 更直观一点,国内培训机构都爱用,新人维护成本低。
fuxinya
39 天前
升 JDK 我反正没遇见问题,Java 向下兼容还是挺 nb 的,毕竟保守派。
目前我是 kotlin + gradle + JDK 21 + Spring boot 3.3

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

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

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

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

© 2021 V2EX