升级到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基本考虑到了向下兼容,为了保险起见,还是尽量做下全部的回归测试。

目录
相关文章
|
7天前
|
消息中间件 NoSQL Java
spring boot2升级boot3指南
本文介绍了如何将Spring Boot 2.x升级至Spring Boot 3.x,涵盖使用OpenRewrite自动化重构工具进行代码转换、依赖版本升级、配置属性调整及常见问题处理等内容,帮助开发者高效完成升级工作。
209 6
|
5月前
|
人工智能 Java API
MCP协议重大升级,Spring AI Alibaba联合Higress发布业界首个Streamable HTTP实现方案
本文由Spring AI Alibaba Contributor刘军、张宇撰写,探讨MCP官方引入的全新Streamable HTTP传输层对原有HTTP+SSE机制的重大改进。文章解析Streamable HTTP的设计思想与技术细节,并介绍Spring AI Alibaba开源框架提供的Java实现,包含无状态服务器模式、流式进度反馈模式等多种场景的应用示例。同时,文章还展示了Spring AI Alibaba + Higress的完整可运行示例,分析当前实现限制及未来优化方向,为开发者提供参考。
|
6月前
|
Java 关系型数据库 数据库
微服务——SpringBoot使用归纳——Spring Boot事务配置管理——常见问题总结
本文总结了Spring Boot中使用事务的常见问题,虽然通过`@Transactional`注解可以轻松实现事务管理,但在实际项目中仍有许多潜在坑点。文章详细分析了三个典型问题:1) 异常未被捕获导致事务未回滚,需明确指定`rollbackFor`属性;2) 异常被try-catch“吃掉”,应避免在事务方法中直接处理异常;3) 事务范围与锁范围不一致引发并发问题,建议调整锁策略以覆盖事务范围。这些问题看似简单,但一旦发生,排查难度较大,因此开发时需格外留意。最后,文章提供了课程源代码下载地址,供读者实践参考。
137 0
|
4月前
|
druid Java 关系型数据库
Spring Boot与Druid升级解决方案
好的,我需要帮助用户解决他们遇到的数据库连接问题,并升级项目的依赖。首先,用户提供的错误信息是关于Spring Boot应用在初始化数据源时抛出的异常,具体是Druid连接池验证连接失败。同时,用户希望升级项目的依赖版本。
449 10
|
5月前
|
SQL 前端开发 Java
深入分析 Spring Boot 项目开发中的常见问题与解决方案
本文深入分析了Spring Boot项目开发中的常见问题与解决方案,涵盖视图路径冲突(Circular View Path)、ECharts图表数据异常及SQL唯一约束冲突等典型场景。通过实际案例剖析问题成因,并提供具体解决方法,如优化视图解析器配置、改进数据查询逻辑以及合理使用外键约束。同时复习了Spring MVC视图解析原理与数据库完整性知识,强调细节处理和数据验证的重要性,为开发者提供实用参考。
252 0
|
9月前
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
142 6
|
9月前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
160 5
|
9月前
|
缓存 监控 Java
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
175 5
|
12月前
|
前端开发 Java Spring
关于spring mvc 的 addPathPatterns 拦截配置常见问题
关于spring mvc 的 addPathPatterns 拦截配置常见问题
551 2
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
1744 15