1

前言

一直在使用SpringCloud Hoxton.SR4版本,以及SpringBoot 2.2.5.RELEASE版本,自从SpringCloud升级到2020.0之后想尝试下升级,并且把遇到的问题记录下来分享给大家

版本对照

官网有个SpringCloud和SpringBoot对照版本,我就是参考该版本来升级的。
image.png
image.png
下面是通过Json方式展示SpringCloud版本对照

image.png
下面是Nacos对应SpringCloud和SpringBoot各版本对照表
image.png

所以我选用的SpringCloud版本是2020.0.0SpringBoot版本是2.4.2Alibaba版本是2021.1,下面我们就来升级。

开始升级

引入相关依赖包

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.2</version>
</parent>
<properties>
    <java.version>1.8</java.version>
    <spring-boot.version>2.4.2</spring-boot.version>
    <spring-cloud.version>2020.0.0</spring-cloud.version>
    <spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
</properties>
<dependencyManagement>
    <dependencies>
        <!-- spring boot 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- spring cloud 依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- spring cloud alibaba 依赖 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>${spring-cloud-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-oauth2</artifactId>
        <version>2.2.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-security</artifactId>
        <version>2.2.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <!-- 添加对bootstrap.yml支持 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>
</dependencies>

升级过程中遇到的问题

  • 1、有些依赖包版本要写死如:spring-cloud-starter-oauth2,是因为,cloud2020.0.0以上版本移除spring-cloud-security-dependencies依赖。
  • 2、pom引入spring-cloud-starter-bootstrap包,否则bootstrap.yml不起作用,
  • 3、nacos discovery要加service属性否则报错,如下所示:
spring:
  application:
    name: aaa
  profiles:
    active: test
  cloud:
    nacos:
      discovery:
        server-addr: http://nacos-host:8848
        namespace: xxx-xxx-xxx
        service: aaa
      config:
        server-addr: http://nacos-host:8848
        file-extension: yaml
        prefix: aaa
        namespace: xxx-xxx-xxx
server:
  port: 8901

总结

  • 1、之前版本的spring-cloud--starter-oauth2包没有了,没有找到对应的。引用包spring-security-oauth2和 spring-security-oauth2-autoconfigure也能实现 oauth2 server功能,但相关的类提示过期。
  • 2、之前的版本当spring cloud bus和mq一起使用时,无法使用stream3.0的写法来接收消息,现在这个问题已经解决。
  • 除了eureka,其它的netflix组件都已经删除

引用

SpringCloud 升级到2020记录
报错dependencies.dependency.version is missing
Spring Cloud Alibaba升级到2.1.0 所遇到的坑
nacos版本说明
springcloud版本对照


Awbeci
3.1k 声望213 粉丝

Awbeci