Spring Boot、Spring Cloud升级踩坑汇总

Spring Boot、Spring Cloud升级踩坑汇总

背景

最近在进行Spring Boot、Spring Cloud的升级,是跨大版本升级,遇到了一些适配的问题,本文主要整理了升级中遇到的问题以及自己的解决思路,希望能够帮助到大家。

升级版本如下:

Spring Boot 2.3.12.REALEASE -> 2.6.7

Spring Cloud Hoxton.SR12 -> 2021.0.2

修改点汇总

根据我们产品使用的功能,大概有如下几个修改点。

循环依赖问题

Spring Boot 2.6.X版本之后默认是不允许产生循环依赖,如果代码中存在循环依赖会直接启动失败。这边需要通过设置spring.main.allow-circular-references属性为true允许循环依赖。

spring:
  main:
    allow-circular-references: true # 允许循环依赖

eureka注册问题

升级Spring Cloud到2021.0.2版本之后,eureka依赖中默认把jersey去掉了,导致注册到eureka失败,但是根据官方文档中的描述,应该默认使用RestTemplate来进行HTTP通信。
在这里插入图片描述
不知道为啥,Spring Cloud升级之后,排除了jersey依赖,HTTP通信貌似也没有通过RestTemplate来进行,启动会报jersey的包找不到:
在这里插入图片描述
之后解决方法就是手动添加了eureka-client依赖,解决问题:

<dependency>
  <groupId>com.netflix.eureka</groupId>
  <artifactId>eureka-client</artifactId>
</dependency>

ConfigServer配置拉取

升级之后,从configserver拉取配置时,会报如下错误,提示spring.config.import属性没有设置
在这里插入图片描述
根据官方文档,应该是Spring Boot 2.4.X版本之后提供了一个新的方式导入配置文件,和之前的配置方式不一样:
在这里插入图片描述
但是如果还是想用之前的方式,在bootstrap.yml文件中添加Spring Cloud Config服务的配置的话,需要添加spirng-cloud-starter-bootstrap这个依赖或者设置spring.cloud.bootstrap.enabled属性为true。
在这里插入图片描述
我这边采用的是添加spring-cloud-starter-bootstrap依赖的方式:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

zuul切换为gateway

其实主要的工作量都在zuul切换gateway这里,因为两边的实现区别很大,一个是基于servlet,一个是基于webflux。之前的博客也进行了总结。大致有如下几个方面。

过滤器

这个可以参考之前的博客,贴一下链接地址:

https://blog.csdn.net/qq_32238611/article/details/124356641

session共享

同样参考之前的博客,链接地址:

https://blog.csdn.net/qq_32238611/article/details/124654696

其他

其他就比如添加熔断,限流等等,网上也有很多类似的文档,大家也可以参考参考,之前整理的链接地址:

https://blog.csdn.net/qq_32238611/article/details/124461159

https://blog.csdn.net/qq_32238611/article/details/124995120

https://blog.csdn.net/qq_32238611/article/details/124743138

结语

以上就是我在进行软件升级时遇到的问题以及自己的解决方案,希望能够帮助到大家,为大家提供一些解决思路。

参考:

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.6-Release-Notes

https://docs.spring.io/spring-cloud-netflix/docs/current/reference/html/#using-the-eurekaclient

https://stackoverflow.com/questions/67507452/no-spring-config-import-property-has-been-defined

https://docs.spring.io/spring-cloud-config/docs/current/reference/html/#_spring_cloud_config_client

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值