老项目升级SpringBoot2.x到3.2.8,JDK8升级17

一、升级jdk

jdk8到jdk17,其中的包名进行了修改,由javax改为了jakarta,但是我们不需要自己手动去改,IDEA工具提供了一个很好的功能,在 重构 选项中找到 迁移软件包和类 ,然后选择 Java EE to Jakarta EE 就可以了,是不是很简单,然后设置一下你项目所用的jdk版本为17就OK了

 最后记得改一下maven打包所依赖的jdk版本

二、SpringBoot升级

1、修改springboot和springcloud依赖版本

如果项目不是微服务项目,没有用到springcloud,就只用升级springboot即可

springboot 和 springcloud的对应版本

 将springboot的版本改为3.2.8,springcloud版本改为2023.0.0

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>3.2.8</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2023.0.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2、查看官方升级指南

文档:Spring Boot 3.0 Migration Guide · spring-projects/spring-boot Wiki · GitHub

帮大家整理了下注意点:

        将 Spring Security 的过滤器配置为为每种调度类型调用。可以使用以下属性配置类型

spring.security.filter.dispatcher-types
  • Spring Boot 3.0 重新命名/删除了一些配置属性,需要相应地更新

        Spring Boot 提供了一个 spring-boot-properties-migrator 模块。一旦将其作为依赖项添加到项目中,它不仅会分析应用程序的环境并在启动时打印诊断报告,还会在运行时为您临时迁移属性

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-properties-migrator</artifactId>
	<scope>runtime</scope>
</dependency>
  • 类型级不再需要 @ConstructingBinding,简单来说就是自动做了字段的映射,可以省略了
  • 自动配置文件 

        2.x老版本使用的都是spring.factories文件,放在资源目录resources/META-INF/下

        现在引入了用于注册自动配置的新 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件,同时保持了与 spring.factories 中注册的向后兼容性

  • JMX默认只暴露Health端点

        可使用属性 management.endpoint.env.show-values 或 management.endpoint.configprops.show-values 进行配置

  • 更改数据属性 

   spring.data 前缀是为 Spring Data 保留的,该前缀下的任何属性都意味着类路径中需要 Spring Data。Redis 的配置属性已从 spring.redis. 移动到  spring.data.redis.因为 redis 自动配置要求 Spring Data 存在于类路径中

  • MySQL JDBC 驱动程序的坐标已从 mysql:mysql-connector-java 变为 com.mysql:mysql-connector-j

3、踩雷经验

  • redis

在Springboot官网提供的升级指南也提到了使用spring data的包名都改成了 spring.data,

由于我使用的spring-boot-starter-data-redis依赖,需要也需要将配置文件改掉

  • swagger!!!

   由于代码侵入性太强了,升级SpringBoot3.0之后有冲突,废弃了Springfox,需要换成Springdoc

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.6.0</version>
</dependency>
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.6.0</version>
</dependency>

对应的注解也需要更换

@Api -------->  @Tag

@ApiIgnore -------> @Parameter(hidden = true) or @Operation(hidden = true) or @Hidden

@ApiImplicitParam -------> @Parameter

@ApiImplicitParams -------> @Parameters

@ApiModel -------> @Schema

@ApiModelProperty(hidden = true) -------> @Schema(accessMode = READ_ONLY)

@ApiModelProperty -------> @Schema

@ApiOperation(value = "") -------> @Operation(summary = "")

@ApiParam -------> @Parameter

@ApiResponse(code = 0, message = "") -------> @ApiResponse(responseCode = "0", description = "")

  • sa-token

需要更换支持springboot3的依赖

<dependency>
    <groupId>cn.dev33</groupId>
    <artifactId>sa-token-spring-boot3-starter</artifactId>
    <version>1.38.0</version>
</dependency>

  • validation

校验参数的依赖也需要更换,从javax到jakarta

<dependency>
    <groupId>jakarta.validation</groupId>
    <artifactId>jakarta.validation-api</artifactId>
</dependency>
  • rabbitmq

属性配置废弃:spring.rabbitmq.publisher-confirms=true  

需更换:spring.rabbitmq.publisher-confirm-type=correlated

  • mybatis plus
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
    <version>3.5.5</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.5</version>
</dependency>

总结:

可以先熟读spring官方提供的升级指南,这样能少走很多弯路,各种三方的依赖一样,比如mybaits-plus 官网也给出了使用springboot需要更换的依赖,如果有不知道该选什么版本的maven依赖,可以在maven仓库中搜索对应的依赖,然后查询pom文件中所用到一些spring相关的依赖版本是否和你所用的版本一致,如下图所示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值