前言
由于把springboot版本升级为3.0 后 组合springcloud alibaba 那套 突然发现 启动带有远程调用的服务出现了问题
1.会出现如下的问题
报错信息如下:
Caused by: java.lang.NullPointerException: Cannot invoke "org.springframework.cloud.openfeign.FeignClientFactoryBean.getFallback()" because "feignClientFactoryBean" is null at com.alibaba.cloud.sentinel.feign.SentinelFeign$Builder$1.create(SentinelFeign.java:93) ~[spring-cloud-starter-alibaba-sentinel-2022.0.0.0-RC1.jar:2022.0.0.0-RC1] at org.springframework.cloud.openfeign.FeignCachingInvocationHandlerFactory.create(FeignCachingInvocationHandlerFactory.java:50) ~[spring-cloud-openfeign-core-4.0.0.jar:4.0.0] at feign.ReflectiveFeign.newInstance(ReflectiveFeign.java:59) ~[feign-core-12.1.jar:na] at feign.ReflectiveFeign.newInstance(ReflectiveFeign.java:50) ~[feign-core-12.1.jar:na] at feign.Feign$Builder.target(Feign.java:197) ~[feign-core-12.1.jar:na] at org.springframework.cloud.openfeign.DefaultTargeter.target(DefaultTargeter.java:30) ~[spring-cloud-openfeign-core-4.0.0.jar:4.0.0] at org.springframework.cloud.openfeign.FeignClientFactoryBean.loadBalance(FeignClientFactoryBean.java:398) ~[spring-cloud-openfeign-core-4.0.0.jar:4.0.0] at org.springframework.cloud.openfeign.FeignClientFactoryBean.getTarget(FeignClientFactoryBean.java:446) ~[spring-cloud-openfeign-core-4.0.0.jar:4.0.0] at org.springframework.cloud.openfeign.FeignClientFactoryBean.getObject(FeignClientFactoryBean.java:421) ~[spring-cloud-openfeign-core-4.0.0.jar:4.0.0] at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:148) ~[spring-beans-6.0.3.jar:6.0.3] ... 33 common frames omitted
2.排查问题
-
我代码都没有改, 我先查看一下 是否是springboot 3.0 改变了写法 但是发现没有改变
-
后面bug 调试发现有setFallback这个back兜底类 那么就不是这里的问题
-
后面我直接用springboot3.0 写一个A调用B案例 发现没有问题 ,那么就不是我的原来代码问题了 接着在排查
-
接着把版本重新降下 就发现可以 但是我觉得肯定是与那个组件有冲突 我找到 maven 里面引用地方一个一个的排除法 突然发现就是这个引起的 注释之后就成功了
<!--FOR alibaba Sentinel -->
<!-- <dependency>-->
<!-- <groupId>com.alibaba.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>-->
<!-- </dependency>--
5.后面我想去spring-cloud-alibaba 里面看看是否有人已经遇到过这个问题?
6.后面发现确实有人遇到过 并且提了issues 有时候还是需要去看 github 有时候其他博客都没有但是官方肯定也会解决方案
7.比如官方的解决方案
Fixed #3007
该问题已在下个版本中修复 , 目前可以通过开启懒加载来解决该问题:
将 spring.cloud.openfeign.lazy-attributes-resolution 设置为 true
总结
有时候 并不一定没有解决方案 只是没有找对路而已
关注我