项目升级到jdk21后 SpringBoot相关组件的适配

了解到jdk21是一个LTS版本,可以稳定支持协程的功能。经过调研,将目前线上的jdk8升级到21,使用协程提升并发性能。

目前系统使用springBoot 2.0.3.RELEASE,并且引入了mybatis-spring-boot-starter、spring-boot-starter-data-redis、jasypt-spring-boot-starter。记录一下升级过程中遇到的问题和解决方法。

1、springboot版本的选择:

从Spring Boot官网可以查到,目前release版本时3.2.4

  • CURRENT:代表了当前版本,最新发布版本,里程碑版本
  • GA:通用正式发布版本,同release
  • SNAPSHOT:快照版本,可用但非稳定版本
  • PRE:预览版本
  • RC:(Release Candidate) 软件选版本。系统平台上的发行候选版本。RC版不会再加入新的功能了,主要着重于除错
  • Alpha:测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。
  • Beta:测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。 

点击Reference Doc.,进入新页面点击Getting Started,然后在点击Installing Spring Boot

可以看到该版本的springboot支持jdk17以上。

SpringBoot和JDK版本兼容问题,在spring官网、spring-boot项目的github地址都没有找到一个统一的总结,在网上无意间找到一个文章,总结如下:

SpringBoot Version

JDK Version

来源

0.0 -1.1

6+(6 or higher)

9. Installing Spring Boot

Spring Boot can be used with “classic” Java development tools or installed as a command line tool. Regardless, you will need Java SDK v1.6 or higher.

9. Installing Spring Boot

Spring Boot can be used with “classic” Java development tools or installed as a command line tool. Regardless, you will need Java SDK v1.6 or higher.

9. Installing Spring Boot

Spring Boot can be used with “classic” Java development tools or installed as a command line tool. Regardless, you will need Java SDK v1.6 or higher.

1.2 - 1.5

6 - 7

9. System Requirements

By default, Spring Boot 1.2.8.RELEASE requires Java 7 and Spring Framework 4.1.5 or above. You can use Spring Boot with Java 6 with some additional configuration.

9. System Requirements

By default, Spring Boot 1.3.8.RELEASE requires Java 7 and Spring Framework 4.2.8.RELEASE or above. You can use Spring Boot with Java 6 with some additional configuration.

9. System Requirements

By default, Spring Boot 1.4.7.RELEASE requires Java 7 and Spring Framework 4.3.9.RELEASE or above. You can use Spring Boot with Java 6 with some additional configuration.

9. System Requirements

By default, Spring Boot 1.5.22.RELEASE requires Java 7 and Spring Framework 4.3.25.RELEASE or above. You can use Spring Boot with Java 6 with some additional configuration.

2.0

8 - 9

9. System Requirements

Spring Boot 2.0.9.RELEASE requires Java 8 or 9 and Spring Framework 5.0.13.RELEASE or above.

2.1

8 - 12

10. System Requirements

Spring Boot 2.1.18.RELEASE requires Java 8 and is compatible up to Java 12 (included).

2.2 - 2.3

8 - 15

Getting Started

Spring Boot 2.2.13.RELEASE requires Java 8 and is compatible up to Java 15 (included).

Getting Started

Spring Boot 2.3.12.RELEASE requires Java 8 and is compatible up to Java 15 (included).

2.4

8 - 16

Getting Started

Spring Boot 2.4.13 requires Java 8 and is compatible up to Java 16 (included).

2.5

8 - 18

Getting Started

Spring Boot 2.5.15 requires Java 8 and is compatible up to and including Java 18.

2.6

8 - 19

Getting Started

Spring Boot 2.6.15 requires Java 8 and is compatible up to and including Java 19.

2.7

8 - 21

Getting Started

Spring Boot 2.7.18 requires Java 8 and is compatible up to and including Java 21.

3.0 - 3.2

17 - 21

Getting Started

Spring Boot 3.0.13 requires Java 17 and is compatible up to and including Java 21.

Getting Started

Spring Boot 3.1.6 requires Java 17 and is compatible up to and including Java 21.

Getting Started

Spring Boot 3.2.0 requires Java 17 and is compatible up to and including Java 21.

2、pom文件

<modelVersion>4.0.0</modelVersion>
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.10</version><relativePath/>
</parent>
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><maven.compiler.encoding>UTF-8</maven.compiler.encoding><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><maven.compiler.compilerVersion>21</maven.compiler.compilerVersion><java.version>21</java.version><skipTests>true</skipTests>
</properties>

3、遇到的一些问题:

 3.1)lombok:

如果项目中使用了lombok组建,可能会遇到如下错误:

java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'

这是因为此版本并不支持jdk21,需要升级到1.18.30 

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>provided</scope>
</dependency>

3.2) spring-boot-starter-data-redis报错:
启动系统,报错无法链接到redis,经过排查发现是高版本spring-boot-starter-redis的配置做了修改。2.0.3.RELEASE的spring-boot-starter-data-redis配置如下:

spring:redis:host: 9.218.74.112port: 6379database: 0password: xxxtimeout: 800lettuce:pool:max-active: 8max-idle: 8min-idle: 0max-wait: -1

3.1.10版本的如下:(多了一层data)

spring:data:redis:host: 9.218.74.102port: 6379database: 0password: ${redisPassword}timeout: 800lettuce:pool:max-active: 8max-idle: 8min-idle: 0max-wait: -1

3.3)mybatis-spring-boot-starter报错:

错误是提示没有在spring-core中找到NestedIOException这个类,查了下,在spring-core 5.3.x版本已经废弃了NestedIOException这个类,在springboot3中使用了spring6。解决方法,升级到3.0.2

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.2</version>
</dependency>

 3.4)javax 变成了 jakarta导致报名错误:

javax 变成了 jakarta,包括HttpServletRequest类、@PostConstruct注解的报名发生了变化。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/820993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【电控笔记2.3】速度回路+系统延迟

2.3.1速度回路pi控制器设计 pi伯德图近似设计(不考虑延时理想情况下) Tl:负载转矩 PI控制器的转折频率:Ki/Kp

VScode插件发布

背景 上期在初涉 VS Code 插件开发-CSDN博客中&#xff0c;通过Yeoman工具创建了第一个插件项目&#xff0c;在helloworld的基础上修改&#xff0c;实现预期的功能后&#xff0c;需要将VScode插件发布到插件市场中使用。 官方文档&#xff1a;Publishing Extensions | Visual…

【C语言】带你完全理解指针(六)指针笔试题

目录 1. 2. 3. 4. 5. 6. 7. 8. 1. int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } 【答案】 2&#xff0c;5 【解析】 定义了一个指向整数的指针ptr&#xff0c;并将其初始化为&…

Angular 使用DomSanitizer防范跨站脚本攻击

跨站脚本Cross-site scripting 简称XSS&#xff0c;是代码注入的一种&#xff0c;是一种网站应用程序的安全漏洞攻击。它允许恶意用户将代码注入到网页上&#xff0c;其他用户在使用网页时就会收到影响&#xff0c;这类攻击通常包含了HTML和用户端脚本语言&#xff08;JS&…

微博百度热搜收集

背景 大家都有使用微博、百度吧&#xff0c;而每天的热搜想必大家也用的不少。微博、百度的热搜有7、8种分类&#xff0c;每个单独查看比较耗费时间&#xff0c;效率极低&#xff0c;大概要花费3&#xff0c;4分钟左右。最近闲来无事&#xff0c;冒出个想法&#xff0c;是不是有…

官宣:2024第二十届国际铸造件展12月精彩呈现!

Shanghai International Die-casting Casting Expo 2024第二十届上海国际压铸、铸造展览会 2024第二十届上海国际压铸、铸件产品展 时间&#xff1a;2024年12月18-20日 地点&#xff1a;上海新国际博览中心&#xff08;浦东区龙阳路2345号&#xff09; 报名参展&#xff1…

【Git】初识 Git

文章目录 1. 提出问题2. 如何解决&#xff1f;版本控制器3. 注意事项 1. 提出问题 不知道你工作或学习时&#xff0c;有没有遇到这样的情况&#xff1a;我们在编写各种文档时&#xff0c;为了防止文档丢失、更改失误、失误后能恢复到原来的版本&#xff0c;不得不复制出一个副…

CC工具箱使用指南:【浙江省村规结构调整表(杨欢)】

一、简介 群友定制工具。 这个工具的功能简单易懂&#xff0c;就是根据输入的现状用地和规划用地图层&#xff0c;生成浙江村规的结构调整表。 村规的结构调整表格式&#xff0c;各个省份都不太一样&#xff0c;无法做一个通用的工具&#xff0c;实在很让人头痛。 看了之后表…

FactoryMethod工厂方法模式详解

目录 模式定义实现方式简单工厂工厂方法主要优点 应用场景源码中的应用 模式定义 定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。 Factory Method 使得一个类的实例化延迟到子类。 实现方式 简单工厂 以下示例非设计模式&#xff0c;仅为编码的一种规…

libcurl 简单使用

LibCurl是一个开源的免费的多协议数据传输开源库&#xff0c;该框架具备跨平台性&#xff0c;开源免费&#xff0c;并提供了包括HTTP、FTP、SMTP、POP3等协议的功能&#xff0c;使用libcurl可以方便地进行网络数据传输操作&#xff0c;如发送HTTP请求、下载文件、发送电子邮件等…

数据结构DAY4--哈希表

哈希表 概念&#xff1a;相当于字典&#xff0c;可以根据数据的关键字来寻找相关数据的查找表。 步骤&#xff1a;建立->插入->遍历->查找->销毁 建立 建立数据&#xff0c;形式随意&#xff0c;但一般为结构体&#xff08;储存的数据量大&#xff09;&#xff…

vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例(Ⅳ)其他配置项

github求⭐ vue3 依赖-组件tablepage-vue3说明文档&#xff0c;列表页快速开发&#xff0c;使用思路及范例&#xff08;Ⅰ&#xff09;配置项文档 vue3 依赖-组件tablepage-vue3说明文档&#xff0c;列表页快速开发&#xff0c;使用思路及范例&#xff08;Ⅱ&#xff09;搜索…

OpenHarmony实战开发-如何实现发布图片评论功能。

介绍 本示例将通过发布图片评论场景&#xff0c;介绍如何使用startAbilityForResult接口拉起相机拍照&#xff0c;并获取相机返回的数据。 效果图预览 使用说明 通过startAbilityForResult接口拉起相机&#xff0c;拍照后获取图片地址。 实现思路 1.创建CommentData类&…

进程替换execl

#include<stdio.h> #include<unistd.h> // int execl(const char *path, const char *arg, ...); int main() {printf("start:\n");execl("/usr/bin/ls","ls","-a",NULL);printf("end!\n"); }如果没有exe…

JavaScript 高性能编程 —— 加载和运行

JavaScript 在浏览器中的性能,可认为是开发者所要面对的最重要的可用性问题。此问题因 JavaScript 的阻塞特征而复杂,也就是说,当 JavaScript 运行时其他的事情不能被浏览器处理。 事实上,大多数浏览 器使用单进程处理 UI 更新和 JavaScript 运行等多个任务,而同一时间只能…

华硕ROG幻16笔记本电脑模式切换管理工具完美替代华硕奥创中心管理工具

文章目录 华硕ROG幻16笔记本电脑模式切换管理工具完美替代华硕奥创中心管理工具1. 介绍2. 下载3. 静音模式、平衡模式、增强模式配置4. 配置电源方案与模式切换绑定5. 启动Ghelper控制面板6. 目前支持的设备型号 华硕ROG幻16笔记本电脑模式切换管理工具完美替代华硕奥创中心管理…

记录一下我hive连不上DataGrip的问题

用户名和密码都没问题&#xff0c;但报如下这个错误 原因&#xff1a;是因为我在linux上没启hiveserver2服务 解决&#xff1a; [atguiguhadoop102 hadoop]$ hiveserver2 which: no hbase in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8…

Vue3——html-doc-js(html导出为word的js库)

一、下载 官方地址 html-doc-js - npm npm install html-doc-js 二、使用方法 // 使用页面中引入 import exportWord from html-doc-js// 配置项以及实现下载方法 const wrap document.getElementById(test)const config {document:document, //默认当前文档的document…

文件分发软件有哪些?最值得推荐的文件分发软件

文件分发软件有哪些&#xff1f;最值得推荐的文件分发软件 文件分发软件通常用于在企业或个人之间高效、安全地分发大量文件或软件包。文件分发软件在功能、安全、兼容性上各有差异&#xff0c;以下是一些文件分发软件的列举&#xff0c;以及它们的特点或优势&#xff0c;希望…

基于Springboot+Vue的Java项目-校园周边美食探索及分享平台系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…