【Springboot 升级3.0 远程调用出现冲突解决方案】

文章描述了一位开发者在将SpringBoot升级到3.0后,集成SpringCloudAlibabaSentinel时遇到的远程调用服务启动异常问题。经过排查,发现问题是由于SentinelFeign的构建过程中触发了NullPointerException。通过降回SpringBoot版本验证问题,最终确定问题源于spring-cloud-starter-alibaba-sentinel依赖。官方提供了解决方案,即通过设置spring.cloud.openfeign.lazy-attributes-resolution为true启用懒加载来修复此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

由于把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.排查问题

  1. 我代码都没有改, 我先查看一下 是否是springboot 3.0 改变了写法 但是发现没有改变

  2. 后面bug 调试发现有setFallback这个back兜底类 那么就不是这里的问题

  3. 后面我直接用springboot3.0 写一个A调用B案例 发现没有问题 ,那么就不是我的原来代码问题了 接着在排查

  4. 接着把版本重新降下 就发现可以 但是我觉得肯定是与那个组件有冲突 我找到 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

总结
有时候 并不一定没有解决方案 只是没有找对路而已

关注我

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伟子涵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值