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>