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的版本 。
文章插图
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.JedisPoolConfig
Git 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升级后这服务我一个星期都没跑起来!】
推荐阅读
- 解压包被上了密码,怎么破解(rar解压密码怎么解)
- Redisson源码解读-公平锁
- 叫我大掌柜2022巅峰商会战活动详解攻略
- BODYCOMBAT认证之路
- 国家幼儿园建设标准 最新幼儿园建设标准
- 网上打字赚钱是真的吗(在线文字录入赚钱)
- 有一个打字赚钱的app叫什么(手机上练习打字的app)
- 为什么还有人相信网络上的“打字赚钱”骗局
- 网上打字赚钱的有哪些(网上打字挣钱日结)
- 一 我要涨知识 —— TypeScript 常见面试题