当前位置: 首页 > article >正文

springboot2.6.15升级至3.3.4,Spring Framework升级至6.1.14

由于CVE-2024-38816漏洞,紧急升级spring boot版本至3.3.4

springboot2.x的用户请注意:

升级版本

目前该漏洞已经修复,受影响用户可升级到以下版本:

Spring Framework 5.3.x:升级到5.3.41(仅限企业支持)

Spring Framework 6.0.x:升级到6.0.25(仅限企业支持)

Spring Framework 6.1.x:升级到6.1.14或更高版本

安全版本Spring Framework 5.3.41为企业版,未免费开放使用!

因此,springboot2.x的用户只能升级到springboot3.x最新版本。
安全版本6.0.24 和 6.1.13 是springboot3.x使用的版本,springboot3.x的用户只需要将springboot升级到最新版本即可,官方已发布最新版本,如下图所示,springboot3.2以下版本已不再提供更新维护。

升级笔记:

引用1

springboot2.x升级到3.x实战经验总结_springboot2升级到3要做什么处理?-CSDN博客

1. 升级java版本至:21

java原来版本为8,需要升级java17以上版本,才能支持spring boot3的版本

简单查询了一下资料,索性直接升级版本至21

查询内容:

深度解读 JDK 8、JDK 11、JDK 17 和 JDK 21 的区别-CSDN博客

https://timefold.ai/blog/java-21-performance

升级过程参照引用1

2. 升级springboot 版本和依赖包

升级mysql驱动包引用:mysql-connector-j      参照引用1

升级java版本后,升级springboot3的最新稳定版本:3.3.4,升级后发现springframework的版本是6.1.3版本,不符合上面漏洞修复的版。需要手动指定spring的版本为:6.1.14版本在pom配置中添加

<properties>
	<java.version>21</java.version>
	<spring.version>6.1.14</spring.version>
</properties>

<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-jcl</artifactId>
            <version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-messaging</artifactId>
            <version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
		</dependency>
<!-- 其他依赖包 -->
<dependencies>

如果引用了httpclient,版本需要指定为5以上的版本RestTemplate引用了httpclient5

<dependency>
    <groupId>org.apache.httpcomponents.client5</groupId>
    <artifactId>httpclient5</artifactId>
</dependency>
全文替换:org.apache.http替换为:org.apache.hc.client5.http
2、javax.servlet包替换为jakarta.servlet

项目全局替换:javax.servlet替换为jakarta.servlet

项目全局替换:javax.persistence替换为jakarta.persistence

项目全局替换:javax.transaction替换为 jakarta.transaction

3、RestTemplate配置

@Bean
    public RestTemplate restTemplate() {
		HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
        httpRequestFactory.setConnectionRequestTimeout(60*1000);
        httpRequestFactory.setConnectTimeout(60*1000);
        //httpRequestFactory.setReadTimeout(60*1000); 新版本中没有此方法
        return new RestTemplate(httpRequestFactory);
    }
3、logback配置修改
https://blog.csdn.net/u013737132/article/details/143064282

http://www.kler.cn/news/367453.html

相关文章:

  • 数据结构与算法-21算法专项(中文分词)(END)
  • Flutter鸿蒙next 中如何实现 WebView【跳、显、适、反】等一些基础问题
  • stm32 使用J-Link RTT Viewer打印日志
  • 青少年编程与数学 02-002 Sql Server 数据库应用 15课题、备份与还原
  • 在时间敏感网络中启用网络诊断:协议、算法和硬件
  • 如何提高英语口语表达能力?
  • GIT使用list
  • Java - Maven中pom文件的filtering作用
  • TDengine数据库整合MyBatis实现SpringBoot项目CRUD
  • 标准版增加订单导出的字段
  • Go encoding/json库
  • 数字后端零基础入门系列 | Innovus零基础LAB学习Day6
  • CodeQL学习笔记(1)-QL语法(逻辑连接词、量词、聚合词、谓词和类)
  • 守护灯杆安全的智能卫士 —— 灯杆倾斜检测传感器
  • 【AIGC】AI如何匹配RAG知识库:混合检索
  • 【CTF】文件包含漏洞-php://filter 流包装器 【详】
  • acwing排列数字
  • 一个和v-html功能一样且能防止xss攻击的插件
  • Java多线程详解②(全程干货!!!)Thread Runnable
  • 本地docker-compose仓库搭建以及推送docker镜像到仓库
  • 音视频入门基础:AAC专题(11)——AudioSpecificConfig简介
  • 【ChatGPT】在多轮对话中引导 ChatGPT 保持一致性
  • 【Qt6聊天室项目】 主界面功能实现
  • 基于SpringBoot的酒店管理系统的设计与实现
  • echarts5.2.2实现 水球图表
  • pdf表格读取和筛选