这篇文章主要是讲解springboot3.X的升级思路和常见问题的解决方法,包含但不限于: 1、升级springboot3.X的依赖管理2、升级springboot3.X的配置文件3、升级springboot3.X的代码。
其中也涉及到一些依赖版本的替换和配置信息更改方法。

1、切换JDK版本为17及以上

官网下载地址:

https://www.oracle.com/java/technologies/downloads/#java21

配置IDEA的JDk版本

在IDEA中打开项目,点击File -> Settings -> Project Structure -> Project -> JDK,选择你下载的JDK版本。

配置pom文件的版本
    <properties>
       <maven.compiler.source>21</maven.compiler.source>
       <maven.compiler.target>21</maven.compiler.target>
       <java.version>21</java.version>
    </properties>

2、升级springboot3.X

升级springboot3.X的依赖管理
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.5.15</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

3、切换Maven版本为3.9.1及以上

官网下载地址:

https://maven.apache.org/download.cgi

配置IDEA的Maven版本

在IDEA中打开项目,点击File -> Settings -> Project Structure -> Project -> Maven,选择你下载的Maven版本。

4、切换Mysql版本为8.0及以上

官网下载地址:

https://dev.mysql.com/downloads/mysql/

切换Druid数据源为HikariCP-依赖配置
     <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <version>${HikariCP.version}</version>
     </dependency>
YML配置
spring:
    datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai
        username: root
        password: root
        hikari:
            # 最小空闲连接
            minimum-idle: 5
            # 最大连接池数量(生产建议10-30,根据DB配置调整)
            maximum-pool-size: 20
            # 从池获取连接等待超时 毫秒
            connection-timeout: 30000
            # 连接空闲多久释放 毫秒(小于mysql wait_timeout,mysql默认8小时,这里设300000=5分钟)
            idle-timeout: 300000
            # 连接生命周期,强制回收,避免无效长连接
            max-lifetime: 1800000
            # 测试连接有效性的SQL
            connection-test-query: SELECT 1
            # 池名称,日志区分
            pool-name: HikariPool-DB

4、lombok注解版本切换为1.18.30

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

5、fastjson更改成fastjson2

    <dependency>
        <groupId>com.alibaba.fastjson2</groupId>
        <artifactId>fastjson2</artifactId>
        <version>2.0.48</version>
      </dependency>
代码更改常见问题
fastjson语法
import com.alibaba.fastjson.JSONObject
fastjson2语法
import com.alibaba.fastjson2.JSONObject
fastjson语法
JSONObject.parseArray()
fastjson2语法
JSON.parseArray()

6、httpclient4更改成httpclient5

    <dependency>
        <groupId>org.apache.httpcomponents.client5</groupId>
        <artifactId>httpclient5</artifactId>
        <version>5.6.1</version>
      </dependency>
代码更改常见问题
4.x语法
import org.apache.http.
5.x语法
import org.apache.hc.client5.http.
4.x语法
builder.setRetryHandler(new DefaultHttpRequestRetryHandler(3, true))
5.x语法
builder.setRetryStrategy(new DefaultHttpRequestRetryStrategy(3, TimeValue.ofSeconds(1)));
4.x语法
RequestConfig.custom()
        .setConnectTimeout(5000)
        .setSocketTimeout(10000)
        .setConnectionRequestTimeout(3000)
        .build();
5.x语法
import org.apache.hc.core5.util.Timeout;

RequestConfig.custom()
        .setConnectTimeout(Timeout.ofMilliseconds(5000))
        // setSocketTimeout 废弃 → setResponseTimeout
        .setResponseTimeout(Timeout.ofMilliseconds(10000))
        .setConnectionRequestTimeout(Timeout.ofMilliseconds(3000))
        .build();

7、其他常见切换

比如:swagger切换内置的openapi规范;hystrix切换为内置的Resilience4j等等。

更多推荐