领导让你从springboot2.X升级到springboot3.X 这篇文章就够了
这篇文章主要是讲解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.Driverurl:jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghaiusername:rootpassword:roothikari:# 最小空闲连接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# 测试连接有效性的SQLconnection-test-query:SELECT 1# 池名称,日志区分pool-name:HikariPool-DB4、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语法importcom.alibaba.fastjson.JSONObjectfastjson2语法importcom.alibaba.fastjson2.JSONObjectfastjson语法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语法importorg.apache.http.5.x语法importorg.apache.hc.client5.http.4.x语法 builder.setRetryHandler(newDefaultHttpRequestRetryHandler(3,true))5.x语法 builder.setRetryStrategy(newDefaultHttpRequestRetryStrategy(3,TimeValue.ofSeconds(1)));4.x语法RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(10000).setConnectionRequestTimeout(3000).build();5.x语法importorg.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等等。
