Java 17+ 与 Spring Boot 3.0 升级指南
前言
岁月如梭,转眼间,自2014年3月Java8的正式发布,已过去10年有余
在这段漫长而又充实的时光里,是无数次的键盘跌宕起伏,成千上万行的代码如繁星般涌动闪现,日落月升,星辰更迭。
Java的生态不断演进 -- Java9、Java11、Java17... 直到最新的Java22,它们如同照耀在我们平凡开发生涯中的一颗颗恒星,不断前行,留下技术进步的轨迹。
身为开发者,我们应有对新知的渴望与探索的勇气,积极拥抱新技术,面向未来,以编程为笔,让每一行代码都更有意义,实现自我的价值。
技术在不断的进步,保持软件的更新迭代是确保项目长期健康发展的关键。我们的开源 SmartAdmin 项目迎来了一波升级,全面支持Java 17及以上版本,并同步升级至 Spring Boot 3.0+。
这一升级不仅带来了技术栈的现代化,更是为了提升项目的性能、安全性、以及更好地适应未来技术的发展趋势。
升级理由
- 技术前沿:Java 17 作为Java平台的最新长期支持(LTS)版本,引入了多项新特性与性能改进,为构建高效、安全的应用提供了有力支持。Spring Boot 3.0则紧跟Java生态的步伐,提供了与新版Java平台无缝集成的开发体验。
- 性能提升:Java 17 在垃圾回收、即时编译器(JIT)等方面进行了优化,使得应用运行更加流畅,响应速度更快。Spring Boot 3.0则通过优化依赖管理、提升自动配置效率等方式,进一步增强了应用的性能表现。
- 安全性增强:Java 17修复了以往版本中的多个安全漏洞,并引入了新的安全特性,如密封类(Sealed Classes),为应用提供了更高级别的安全保障。Spring Boot 3.0也跟随Spring Framework的步伐,加强了对安全性的关注和支持。
- 生态支持:随着Java和Spring社区的不断发展,越来越多的库和框架开始支持Java 17和Spring Boot 3.0。升级后,项目将能更好地融入这一生态系统,享受更丰富的资源和更广泛的社区支持。
升级好处
- 提升开发效率:Spring Boot 3.0带来了更简洁的配置、更强大的自动配置能力,以及更丰富的Starter,这些都将极大地提升开发效率,让开发者能够更专注于业务逻辑的实现。
- 优化运维体验:新版本的Spring Boot提供了更完善的监控、诊断和调试工具,使得运维工作更加便捷高效。同时,Java 17的性能优化也将有助于降低运维成本,提升应用的稳定性。
- 增强可扩展性和可维护性:借助Java 17的新特性和Spring Boot 3.0的架构优化,项目将更加易于扩展和维护。这将有助于项目在长期发展中保持竞争力。
- 未来兼容性:选择Java 17和Spring Boot 3.0意味着项目将站在技术发展的前沿,为未来可能的技术变革做好充分准备。
综上所述,升级至Java 17 与 SpringBoot3.0 是一个明智且必要的选择。
它不仅能让项目享受到最新的技术成果,还能为项目的长期发展奠定坚实的基础。我们期待这一升级能为所有使用者带来更加美好的开发体验和应用性能。
升级指南
无论您是想直接使用新版本项目代码,还是想尝试升级原有项目,都可以参考以下指南(2选1)
1、使用新代码 为了与原有 Java8 + SpringBoot2.0 的项目代码区分,我们将升级后的 Java17 + SpringBoot3.0 项目代码放在了新文件夹《smart-admin-api-java17》中。 以后的项目迭代维护,我们也会同时更新 Java8 与 Java17 两个版本。
2、更新老代码 以下是本次更新一些主要改动,如果您是老版本的 SmartAdmin项目 或者 SpringBoot2.0项目,也想要升级到 Java17+SpringBoot3.0
那么您可以参考升级,当然每个项目的技术栈,依赖的第三方框架,可能不一致,仅供参考,
更详细的 Springboot3.0 升级指南请参考官方文档:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide
- 更新pom文件 java 与 springboot 版本
<java.version>17</java.vversion>
<springboot.version>3.3.1</springboot.version>
- 更新Maven打包配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<source>17</source>
<target>17</target>
<encoding>UTF-8</encoding>
<compilerArgument>-parameters</compilerArgument>
</configuration>
</plugin>
- 全局替换导入路径 ,Java17中 JavaEE 相关已迁移到 Jakarta中,影响到 Servlet API、JPA、Bean Validation 等引用需要修改。
javax.persistence.* -> jakarta.persistence.*
javax.validation.* -> jakarta.validation.*
javax.servlet.* -> jakarta.servlet.*
javax.annotation.* -> jakarta.annotation.*
javax.transaction.* -> jakarta.transaction.*
以下为一些主要依赖项的更新,仅供参考。
- 更新 mysql 依赖
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
- 更新 druid 依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<version>1.2.23</version>
</dependency>
- 更新 mybatis-plus 依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.7</version>
</dependency>
- 更新 sa-token 依赖
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot3-starter</artifactId>
<version>1.38.0</version>
</dependency>
结语
尽管我们已进行测试和优化,但任何大型的技术升级都可能伴随着未知的问题和潜在的Bug。
我们诚挚地邀请开发同志们在实际使用过程中积极反馈遇到的问题和意见。
您可以通过Git、Gitee 、微信群反馈问题,欢迎提出改进建议、参与代码审查或者直接贡献代码。
感谢所有参与和支持本项目的朋友们,你们的反馈和建议对我们至关重要!
联系我们
- 教育领域(高职院校数字化、就业创业大数据平台、继续教育平台;在线教育系统、视频直播、题库等,包含:医学、应急管理、成考、专升本等)
- 供应链领域(网络货运平台、大宗贸易进销存ERP、物流管理TMS、B2B电商、仓储WMS、AI提效等)
- 中医领域(诊所数字化管理、互联网医院、AI辅助诊疗、中医适宜技术、在线云问诊、空中药房等)
- AI+软件领域(软件定制外包、开源技术、数据大屏、国产化改造、技术升级换代、人员外包、技术顾问、技术培训等)
加微信: 卓大 拉你入群,一起学习 | 公众号 :六边形工程师 分享:赚钱、代码、生活 | 请 “1024创新实验室” 烩面里加肉 咖啡配胡辣汤,提神又饱腹 | 抖音 : 六边形工程师 直播:赚钱、代码、中医 |