Springboot2升级Springboot3

SpringBoot2升级到SpringBoot31.Java环境变化2.第三方库版本升级1.SpringBoot2.Mybatis & Mybatis Plus4.druid5.swagger6.spring-cloud(Alibaba)7.nacos8.feign9.redis

1.Java环境变化

Java8到Java17的语言特性变化

从 JDK 11 开始,Java EE 从 Oracle 转移到了 Eclipse 基金会,并改名为 Jakarta EE,因此相关的 API 也相应地进行了迁移和重命名。具体替换如下:

  • javax.validation替换为jakarta.validation

  • javax.servlet替换为jakarta.servlet

2.第三方库版本升级

1.SpringBoot

调整后

<dependency>
   <groupId>org.springframework.boot</groupId> 
   <artifactId>spring-boot-starter-parent</artifactId>      
    <version>3.0.5</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

SpringBoot2.6.X默认不允许循环依赖,所以若是2.6.X以下的SpringBoot版本升级,需要允许循环依赖。

spring.main.all-circular-references: true

2.Mybatis & Mybatis Plus

调整后

<dependency>             
    <groupId>org.mybatis.spring.boot</groupId>           
    <artifactId>mybatis-spring-boot-starter</artifactId>           
    <version>3.0.3</version> 
</dependency> 
<dependency>     
    <groupId>tk.mybatis</groupId>           
    <artifactId>mapper</artifactId>           
    <version>4.2.3</version> 
</dependency> 
​
<!--mybatis-plus-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
    <version>3.5.5</version>
</dependency>
​
<!--mybatis-plus-annotation-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-annotation</artifactId>
    <version>3.5.5</version>
</dependency>

MapperScan注解包路径调整,@org.mybatis.spring.annotation.MapperScan调整为@tk.mybatis.spring.annotation.MapperScan。

4.druid

原依赖

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid-spring-boot-starter</artifactId>
   <version>1.1.10</version>
</dependency>

springboot3.x版本,这里的druid数据源必须是1.2.19以上

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-3-starter</artifactId>
    <version>1.2.21</version>
</dependency>

5.swagger

<dependency>
    <groupId>io.springfox</groupId>    
    <artifactId>springfox-boot-starter</artifactId>    
    <version>3.0.0</version> 
</dependency>
​
<dependency>
   <groupId>com.github.xiaoymin</groupId>
   <artifactId>knife4j-spring-boot-starter</artifactId>
   <version>3.0.3</version>
</dependency>
​
<!-- 引入swagger-bootstrap-ui包 -->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>swagger-bootstrap-ui</artifactId>
    <version>1.8.5</version>
</dependency>

6.spring-cloud(Alibaba)

调整后

 <!-- SpringCloud -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>2022.0.5</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
​
<!-- SpringCloud Alibaba -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2022.0.0.0-RC2</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

SpringCloud‌是一套全家桶的微服务解决框架,旨在解决微服务架构中遇到的各种问题。它继承了‌Spring Cloud Netflix的一些核心模块,如‌Eureka、‌Hystrix等,但这些组件逐渐被SpringCloud Alibaba的新技术所替代。‌12

SpringCloudAlibaba‌是对SpringCloud 2.x和1.x的扩展组件功能。它继承了Spring Cloud Netflix的一些核心模块,但设计和实现上可能有所不同。‌

另外,springcloud会自动检测版本兼容,springboot3.2.X需要对应2023.X aka Leyton以上的cloud版本,这里我们关闭兼容校验,需在application.yaml配置:

cloud.compatibility-verifier.enabled: false

7.nacos

调整后

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

SpringBoot3应用接入nacos做配置管理,目前可以能通过springcloud alibaba进行较为便捷的接入。application.yaml配置如下:

spring:
  application:
    name: yourSystem
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        service: ${spring.application.name}
        username: nacos
        password: nacos
      config:
        namespace: base
        group: yourGroup
        enable-remote-sync-config: true #启用远程同步配置
        #refresh-enabled: true #用来开启、关闭动态刷新
        config-retry-time: 600 #获取配置项失败的重试时间
        config-long-poll-timeout: 60000 #长轮询超时时间
        max-retry: 10 #限制重试次数

8.feign

调整后

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

9.redis

调整后

<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson-spring-boot-starter</artifactId>
    <version>3.23.5</version>
</dependency>
### Spring Boot 2 升级Spring Boot 3 的步骤和注意事项 #### 步骤概述 将 Spring Boot 2 应用程序升级Spring Boot 3 是一项涉及多个方面的任务,主要包括更新依赖项、调整配置文件以及处理不兼容的变化。以下是具体的步骤: 1. **确认基础 JDK 版本** - Spring Boot 3 要求最低使用 Java 17(LTS),因此需要先确保当前应用程序运行在支持的 JDK 上[^1]。 2. **更新 Maven 或 Gradle 构建工具中的版本号** - 如果使用的是 Maven,则需修改 `pom.xml` 文件中的 `<parent>` 部分,将其指向最新的 Spring Boot Starter Parent 版本。 ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.x.x</version> </parent> ``` - 对于 Gradle 用户,应更改 `build.gradle` 中的相关部分: ```gradle plugins { id &#39;org.springframework.boot&#39; version &#39;3.x.x&#39; id &#39;io.spring.dependency-management&#39; version &#39;1.1.x&#39; } ``` 3. **解决移除或废弃的功能** - 审查官方文档中列出的所有已删除或弃用的方法/类,并逐一替换为推荐替代方案[^1]。 4. **迁移至新的 Actuator 端点路径结构** - 默认情况下,Actuator 端点 URL 已经改变;开发者可能需要重新映射这些端点以匹配新标准[^2]。 5. **测试并验证应用行为一致性** - 运行单元测试与集成测试来保证升级后的系统仍然能够正常工作无误。 #### 注意事项 - **检查第三方库兼容性**: 许多流行的框架也发布了针对 SB3 的特别版本,请务必同步升级它们以防潜在冲突发生[^3]。 - **数据源驱动更新**: MySQL Connector/J 至少要达到 v8+, PostgreSQL 则建议采用较新型号[^1]. - **日志框架变更**: Logback 不再被默认支持, 取而代之的是 Log4j2 或其他现代实现方式[^2]. ```java // 示例代码展示如何切换日志记录器 import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ExampleLogger { private static final Logger logger = LoggerFactory.getLogger(ExampleLogger.class); public void logMessage() { logger.info("This is an info message."); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值