环境

  • JDK17

  • SpringBoot 3.3.2

  • spring-cloud-dependencies 2023.0.1

  • spring-cloud-alibaba-dependencies 2023.0.1.2

NACOS升级(重要)

新版本nacos客户端新增grpc连接nacos服务端(版本2.x),服务端需升级至2.x版本,端口新增port+1000 提供rpc支持

配置文件导入形式变更

SpringBoot从2.4.x版本开始支持导入文件的方式来加载配置参数,从 Spring Boot 2.6.x 开始,不再默认集成 spring-cloud-starter-bootstrap,即不再支持从bootstrap.yml文件中读取配置,为过渡版本使用习惯,仍保留bootstrap.yml加载配置:

引入bootstrap.yml(中台默认)

手动引入spring-cloud-starter-bootstrap依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
    <version>${cloud-bootstrap.version}</version>
<!--    <cloud-bootstrap.version>4.1.4</cloud-bootstrap.version>-->
</dependency>

脱离bootstrap.yml

改用spring.config.import机制来加载属性:默认不再读取bootstrap.yml的配置文件,配置文件以application开头

数据库驱动

中台统一管理数据库驱动版本:

  • mariadb-java-client驱动在3.x之后的版本为了与mysql作区分,url写法改为jdbc:mariadb://IP:PORT,不再兼容jdbc:mysql://IP:PORT

  • (附)mysql-connector-java更名为mysql-connector-j

Redis配置调整

spring:
  data:
    redis:
      host: ${redis.memory.ip}
      port: ${redis.memory.port}
      database: 0
      password: ${redis.memory.password}
      jedis:
        pool:
          max-active: 32
          max-wait: 2000
          max-idle: 16
          min-idle: 4

Maven版本要求3.6.3及以上

Zipkin集成问题

  • 由于Spring Cloud Sleuth最新版本只支持Spring Boot 2.7.x,核心项目已经迁移到Micrometer Traceing项目,Spring Boot 3.x版本要实现分布式链路追踪需要集成Micrometer。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!--指标追踪-->
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-tracing</artifactId>
    </dependency>
    <!--适配zipkin的桥接包-->
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-tracing-bridge-brave</artifactId>
    </dependency>
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-observation</artifactId>
    </dependency>
    <dependency>
        <groupId>io.github.openfeign</groupId>
        <artifactId>feign-micrometer</artifactId>
    </dependency>
    <dependency>
        <groupId>io.zipkin.reporter2</groupId>
        <artifactId>zipkin-reporter-brave</artifactId>
    </dependency>
    <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy</artifactId>
        <version>1.15.1</version>
    </dependency>
    <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy-agent</artifactId>
        <version>1.15.1</version>
    </dependency>
</dependencies>
  • 配置文件变更,例:

management:
  zipkin:
    tracing:
      endpoint: http://localhost:9411/api/v2/spans
  tracing:
    sampling:
      probability: 1.0

logback日志配置调整

logback部分默认配置调整:

其他配置请参考源码配置:spring-configuration-metadata.json

RocketMQ集成问题

SpringBoot3.0已经放弃了spring.factories自动装配,需创建/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件进行兼容:

org.apache.rocketmq.spring.autoconfigure.RocketMQAutoConfiguration

附ISSUE:

https://github.com/apache/rocketmq-spring/pull/541

Servlet调整

servlet相关导入包调整为jakarta.servlet.*

<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>${jakarta.servlet-api.version}</version>
</dependency>

其他

  • @Resource注解导入的包改为jakarta.annotation.Resource

  • Springboot部分注解调整:@Valid、@NotBlank等注解调整包路径,删除原有import 包,alt+enter自动导入包。

  • JDK的升级存在部分方法调用的调整,具体代码需具体分析,例:

    sun.misc.BASE64Decodersun.misc.BASE64Encoder报错,找不到该类:原因为sun.misc.BASE64Decodersun.misc.BASE64Encoder在JDK9及以后被弃用并且不再受支持,需改用java标准库java.util.Base64进行Base64编码和解码。

  • 其他SpringBoot方法调整,具体代码需具体分析