找回密码
 会员注册
查看: 26|回复: 0

JDK8升级17及springboot2.x升级3.x指南

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
64738
发表于 2024-9-3 21:07:50 | 显示全部楼层 |阅读模式
写在前面前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站文章目录JDK8升级17简介javax.*包移到jakarta.*mavenpom中更新java版本springboot2.x升级3.xspring-boot与cloud、alibaba-cloud的版本对应redis默认配置调整SpringBoot3.x整合Querydsl其他注意事项maven及maven插件的版本升级maven版本升级maven-compiler-plugin版本升级JDK8升级17简介从JDK8升级到JDK17的过程中,有几个主要的变化,特别是JavaPlatformModuleSystem(JPMS)的引入,以及一些包路径的调整。以下是与JDK17相关的一些重要变化:JavaPlatformModuleSystem(JPMS)模块化:JDK9引入了模块系统,将标准Java库划分为多个模块。这影响了JDK17中的包结构和类的组织方式。模块路径:JDK11引入了--module-path和--add-modules选项,允许用户指定模块路径和加载特定模块。JavaEEAPIs移除JAX-RS:javax.ws.rs.*包现在不在标准JavaSE平台上。JAX-WS:javax.xml.ws.*包现在不在标准JavaSE平台上。JAX-B:javax.xml.bind.*包现在不在标准JavaSE平台上。其他变化JavaFX:JavaFX已经从标准JavaSE平台中移除,现在作为一个独立的模块存在。如果应用使用了JavaFX,确保已经添加了JavaFX模块到应用中JSR355:JSR355定义了一些与JavaFX相关的包,这些包也不再包含在标准JavaSE平台上。JDK17中的新特性JEP391:ForeignFunction&MemoryAPI(Incubator):提供了与外部代码和内存交互的能力。JEP403:SealedClasses:允许类声明为密封,以限制继承。JEP404atternMatchingforswitch(Preview):引入了模式匹配支持到switch语句中。JEP414:VectorAPI(FourthIncubator):提供了一种利用向量硬件指令的途径。javax.*包移到jakarta.*JakartaEE技术栈:随着JavaEE转变为JakartaEE,许多javax.*包已经被迁移到jakarta.*包下。这对于使用JavaPersistenceAPI(JPA)、JSF、EJB等技术的应用尤为重要。javax.persistence.*->jakarta.persistence.*javax.faces.*->jakarta.faces.*javax.ejb.*->jakarta.ejb.*javax.servlet.*->jakarta.servlet.*javax.servlet.jsp.*->jakarta.servlet.jsp.*javax.websocket.*->jakarta.websocket.*javax.naming.*->jakarta.naming.*javax.sql.*->jakarta.sql.*javax.transaction.*->jakarta.transaction.*JDK8升级到JDK17需确保代码中引用了正确的包名。应该使用jakarta.*而不是javax.*。mavenpom中更新java版本建议在父项目添加全局变量java.version,然后在maven-compiler-plugin引用 17 UTF-8 UTF-8 org.apache.maven.plugins3.10.1${java.version}${java.version}UTF-81234567891011121314151617181920springboot2.x升级3.xspring-boot与cloud、alibaba-cloud的版本对应spring-cloud与spring-boot的版本对应详见spring-cloud官方文档spring-alibaba-cloud与spring-cloud、spring-boot的版本对应详见spring-alibaba-cloud官方文档redis默认配置调整在Springboot2.x的版本中,redis的默认配置是spring.redis.*,升级成Springboot3.x以后,redis的默认配置调整为了spring.data.redis.*。若继续使用Springboot2.x的redis配置,会导致获取不到redis的配置。SpringBoot3.x整合Querydsl主要问题:springboot升级3.0,jpa包路径从javax改成jakarta,在默认情况下,无法生存Q类,也没办法使用JPAQuery解决方法:引入依赖。重点:classifier标签com.querydsljakarta5.0.0com.querydsl5.0.0providedtruejakarta123456789101112131415引入mavenplugin com.mysema.maven1.1.3 target/generated-sources com.querydsl.apt.jpa.JPAAnnotationProcessor1234567891011121314151617注意:每个项目配置可能会有差别,在编译时可能会报错:Attempttorecreateafilefortypexxx,导致此错误的情况也不太一致。可能的原因之一是因为配置了goals,所以此处注释掉goals,其他情况不一定能适用此方式。其他注意事项依赖循环引用报错如果升级前的SpringBoot版本早于2.6.0,且存在springioc对象的循环引用,则需要添加允许循环引用的配置,否则报错spring:main:allow-circular-references:true123WebMvcConfigurerAdapter.class找不到报错SpringBoot3基于SpringFramework6,而在SpringFramework5.3中,WebMvcConfigurerAdapter类已经被弃用,并在后续版本中移除。解决方案使用WebMvcConfigurer接口:WebMvcConfigurerAdapter是一个抽象适配器类,用于实现WebMvcConfigurer接口。在SpringFramework6中,可以直接实现WebMvcConfigurer接口来定制WebMVC的行为。创建自定义配置类:创建一个新的类,实现WebMvcConfigurer接口,并重写需要的方法。@ConfigurationpublicclassWebConfigimplementsWebMvcConfigurer{@OverridepublicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){//自定义资源处理}@OverridepublicvoidconfigurePathMatch(PathMatchConfigurerconfigurer){//自定义路径匹配}//其他需要的方法}123456789101112SpringBoot3.x支持优雅退出,添加以下配置开启#打开优雅退出server:shutdown:graceful#多长时间后强制杀掉进程spring:lifecycle:timeout-per-shutdown-phase:30s1234567maven及maven插件的版本升级maven版本升级为了确保Maven版本与Java17兼容,应该使用一个较新的Maven版本。Java17是一个长期支持(LTS)版本,它是在2021年9月发布的。因此,应该使用Maven3.6.0或更高版本来确保良好的兼容性。以下是几个推荐的Maven版本及其发布日期:Maven3.6.0-发布于2019年2月10日Maven3.6.3-发布于2020年3月10日Maven3.8.1-发布于2021年2月18日Maven3.8.5-发布于2022年5月23日Maven3.8.5是一个较为推荐的版本,因为它包含了对Java17的良好支持以及一些重要的安全修复和改进。升级Maven版本查看当前Maven版本:打开终端或命令提示符,运行以下命令来查看已安装的Maven版本:mvn--version1如果还没有安装Maven,或者安装的版本较旧,可以按照下面的步骤安装或升级。安装或升级Maven:Windows用户:访问ApacheMaven官方下载页面下载最新的Maven版本。解压下载的文件到一个目录,例如C:\apache-maven-3.8.5。将Maven的bin目录添加到系统环境变量PATH中。设置M2_HOME环境变量,值为Maven的安装目录。Linux/macOS用户:使用包管理器安装Maven,例如对于Ubuntu/Debian使用apt-get,对于macOS使用brew:sudoaptupdate&sudoaptinstallmaven1或者使用Homebrew:brewinstallmaven1或者从ApacheMaven官网下载二进制分发包,解压缩到/usr/local或其他位置,并通过mvn--version确认安装成功。设置Java17作为默认JDK:Windows用户:确保安装了Java17,并将其路径添加到环境变量JAVA_HOME中。设置JAVA_HOME环境变量指向Java17的安装目录。Linux/macOS用户:安装Java17,例如使用sdkman或者直接从Oracle或Adoptium下载。设置JAVA_HOME环境变量指向Java17的安装目录。确保JAVA_HOME和PATH环境变量被正确设置。验证Maven和Java版本:再次运行mvn--version命令,确保显示的Java版本为17,并且Maven版本为3.8.5或更高。配置Maven以使用Java17:在pom.xml文件中指定Java17编译和源代码版本,详见maven-compiler-plugin版本升级maven-compiler-plugin版本升级为了确保Maven编译插件(maven-compiler-plugin)与Java17兼容并支持SpringBoot3的需求,需要选择一个合适的maven-compiler-plugin版本。截至2023年,maven-compiler-plugin的最新稳定版本是3.10.1。该版本与Java17兼容,并且适用于SpringBoot3。下面是maven-compiler-plugin的一个示例配置,用于确保使用Java17进行编译: org.apache.maven.plugins3.10.1171712345678910111213这里的关键配置点包括:和都设置为17,以指示使用Java17进行编译。设置为3.10.1,这是与Java17兼容的一个版本。**请注意,需要根据实际的Maven和SpringBoot版本进行适当的调整。**如果需要使用特定版本的maven-compiler-plugin,请查阅官方文档或发布页面以确认版本的兼容性。`
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-28 20:44 , Processed in 0.511249 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表