上 我服了!SpringBoot升级后这服务我一个星期都没跑起来!( 二 )

spring-cloud-netflix-eureka-client 移除了 ribbon和hystrix依赖,所以客户端默认不会有ribbon这些东西了 。
解决方案:手动引入新的依赖 。
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId><version>2.2.10.RELEASE</version> </dependency>10. spring-cloud-starter-alibaba-sentinel版本不兼容spring-cloud-starter-alibaba-sentinel 使用的是 2.1.3.RELEASE  , 和新版本存在兼容性问题,导致无法启动,存在循环依赖问题 。
报错信息:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration': Unsatisfied dependency expressed through method 'setConfigurers' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.alibaba.cloud.sentinel.SentinelWebAutoConfiguration': Unsatisfied dependency expressed through field 'sentinelWebInterceptorOptional'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'com.alibaba.cloud.sentinel.SentinelWebAutoConfiguration': Requested bean is currently in creation: Is there an unresolvable circular reference?解决方案:升级为当前 Spring Cloud 一样的版本 。
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>2021.0.4.0</version> </dependency>11. commons-pool2兼容性报错spring-boot-autoconfigure 2.7.5版本中 JedisConnectionConfiguration 报错,原因在于我们有的业务代码依赖中自己指定了 commons-pool2的版本 。

上 我服了!SpringBoot升级后这服务我一个星期都没跑起来!

文章插图
Description:An attempt was made to call a method that does not exist. The attempt was made from the following location:org.springframework.boot.autoconfigure.data.redis.JedisConnectionConfiguration.jedisPoolConfig(JedisConnectionConfiguration.java:114)The following method did not exist:redis.clients.jedis.JedisPoolConfig.setMaxWait(Ljava/time/Duration;)VAction:Correct the classpath of your application so that it contains compatible versions of the classes org.springframework.boot.autoconfigure.data.redis.JedisConnectionConfiguration and redis.clients.jedis.JedisPoolConfigGit Issue :https://github.com/spring-projects/spring-boot/issues/27642
看这个时间很早就修正了 , commons-pool2 在2.8.1版本后丢失了一些方法 。
解决方案:自己不要指定该包版本默认会使用 spring boot 的最新依赖,或者手动指定最新版本2.11.1 。
12. 循环依赖报错spring-boot 2.6版本之后禁止循环依赖,有的话启动会报错,报错信息和第十个问题是一样的 , 不同的是业务代码的报错而已 。
解决方案:手动解决代码循环依赖问题或者设置属性 spring.main.allow-circular-references=true
13. spring-rabbit 版本兼容升级之后,由于中间件封装了 rabbit 的一些功能,去掉了 spring-rabbit的自动装配 , 导致基本上整个中间件包不可用,大量方法不兼容 。
解决方案:全部用2.7.5版本的代码覆盖自动装配的逻辑 。
上 我服了!SpringBoot升级后这服务我一个星期都没跑起来!

文章插图
小总结看起来这些问题都只是一两句话的功夫,但是实际上花了大量的时间在排查、找解决方案,还有把所有现在依赖的包版本重新筛查,修改包版本、重新打包测试版本,中间非人体验实在不是一两句话能说清楚的,我觉得,做业务开发其实也挺好的 。
目前革命还只是进行了一小步,还有更多的问题需要去解决,不过这个星期必须全部解决?。。?
【上 我服了!SpringBoot升级后这服务我一个星期都没跑起来!】

推荐阅读