升级到Spring Cloud 2021.0.3 常见问题

简介: 升级到Spring Cloud 2021.0.3 常见问题

概述


由于低版本存在一些安全漏洞,客户要求升级spring cloud和spring boot版本,索性我这边就任性地升级到最新版本,在升级过程中遇到了不少的问题,希望可以帮助同样需要升级的同学。

我这边升级的版本如下::

Spring Boot 2.3.12.REALEASE -> 2.6.7

Spring Cloud Hoxton.SR12 -> 2021.0.3


问题解决


解决编译报错问题

原因: 新版本的spring cloud中移除了hystrix相关的依赖

解决方案:

  1. 重新导入histrix相关的依赖。
  2. 引入open feign中的FallbackFactory

我们采用的是第2个方案。


启动未加载微服务bean以及bootstrap.yml

原因:

升级后的spring cloud默认不装载spring cloud相关的bean,也不加载bootstrap.yml, 导致应用无法注册以及从配置中心读取配,官方文档有提到(原文传送门)。

解决方案:

以下这个类中来判断是否启用spring cloud的源码:

  1. 通过系统变量或者环境变量设置spring.cloud.bootstrap.enabled为true。
  2. 引入下面的依赖:
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

我们选择的是方案2。


No Feign Client for loadBalancing defined

原因:

新版本的spring cloud 移除了对ribbon的支持,众所周知,netflix以及停止维护了,所有新版本的spring cloud去除了处eureka的其他组件。

解决方案:

  1. 引入新的loadbalancer的jar
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
  1. 目前发现无法支持ribbon, 引入ribbon的报会报如下的错误。

Bean循环引用报错

高版本spring boot默认禁止bean的循环引用。

解决方案:

配置文件中添加如下的配置:

spring.main.allow-circular-references: true


配置检查更新


升级到新功能版本时,某些属性可能已重命名或删除。Spring Boot 提供了一种在启动时分析应用程序环境和打印诊断信息的方法,还可以在运行时为您临时迁移属性。要启用该功能,请将以下依赖项添加到您的项目中:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-properties-migrator</artifactId>
    <scope>runtime</scope>
</dependency>

可以看到发生变化的配置如下:

完成迁移后,请确保从项目的依赖项中删除此模块。


总结


整体来说,升级还是相对顺利的,spring基本考虑到了向下兼容,为了保险起见,还是尽量做下全部的回归测试。

目录
相关文章
|
5月前
|
监控 负载均衡 Java
深入理解Spring Cloud中的服务网关
深入理解Spring Cloud中的服务网关
|
5月前
|
Java 开发工具 git
实现基于Spring Cloud的配置中心
实现基于Spring Cloud的配置中心
|
5月前
|
设计模式 监控 Java
解析Spring Cloud中的断路器模式原理
解析Spring Cloud中的断路器模式原理
|
3月前
|
前端开发 Java Spring
关于spring mvc 的 addPathPatterns 拦截配置常见问题
关于spring mvc 的 addPathPatterns 拦截配置常见问题
241 1
|
5月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
Spring Cloud Alibaba 发布了 Scheduling 任务调度模块 [#3732]提供了一套开源、轻量级、高可用的定时任务解决方案,帮助您快速开发微服务体系下的分布式定时任务。
14995 29
|
5月前
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
517 15
|
4月前
|
API 开发者 Java
API 版本控制不再难!Spring 框架带你玩转多样化的版本管理策略,轻松应对升级挑战!
【8月更文挑战第31天】在开发RESTful服务时,为解决向后兼容性问题,常需进行API版本控制。本文以Spring框架为例,探讨四种版本控制策略:URL版本控制、请求头版本控制、查询参数版本控制及媒体类型版本控制,并提供示例代码。此外,还介绍了通过自定义注解与过滤器实现更灵活的版本控制方案,帮助开发者根据项目需求选择最适合的方法,确保API演化的管理和客户端使用的稳定与兼容。
183 0
|
5月前
|
Java Spring
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
115 3
|
5月前
|
消息中间件 Java 开发者
Spring Cloud微服务框架:构建高可用、分布式系统的现代架构
Spring Cloud是一个开源的微服务框架,旨在帮助开发者快速构建在分布式系统环境中运行的服务。它提供了一系列工具,用于在分布式系统中配置、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等领域的支持。
191 5