运维在扫描项目的时候发现了官方发布的漏洞,https://spring.io/security/cve-2024-38816
我们使用的是spring框架的2.x系列,WebMvc依赖于5.3系列,描述说需要更新到5.3.40,但是官方迟迟不再更新。同时发现官方说5.3系列也就更新到2024。既然这样,我们就升级springboot到3.x系列,mvc自然就更新到了6.1系列。
下面把升级过程记录下。
https://mvnrepository.com/ 我们这里可以查询要升级的版本
1、pom文件升级springboot
<dependency>
<!-- 此处是官方文档提供的必须要引入管理的文件 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.3.6</version>
<type>pom</type>
<scope>import</scope>
</dependency>
2、mybits升级
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.16</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>3.0.4</version>
</dependency>
3、org.apache.httpcomponents需要指定版本号,2.x无需指定
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.16</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.14</version>
</dependency>
4、mail组件指定版本号
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>
5、hutool升级
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.33</version>
</dependency>
@SpringBootApplication
@ComponentScan(basePackages = {"cn.hutool.extra.spring"})
public class AppMain
上面这一条非常重要,要不SpringUtil无法初始化。
6、redis配置
当我升级完以后,我在mac上运行正常,但是在服务器上面发现redis能连上,但是无法通信。我就又升级了linux服务器的redis版本,结果还是一样。我就又开始找原因,发现我本来配置的redis的数据库index是1,居然把数据存到了index为0的数据库中了,这就说明配置除了问题。后来通过搜索发现,2.x升级到3.x需要更改redis的配置,
2.x的配置是spring.redis
3.x的配置是spring .data.redis
更换完后,redis通信正常了。
7、运行环境要更新为jdk21
下载jdk21
Java Downloads | Oracle
下载、解压
idea配置
选择自己刚才解压的目录
服务器配置
使用wget命令下载
解压
如果服务器原来有默认的java,可以先把/usr/bin下的java相关的link连接先删除掉
在.bashrc中配置正常的环境变量
export JAVA_HOME=/root/software/jdk-21.0.5
export PATH=$PATH:$JAVA_HOME/bin