使用 openFeign 報初始化 空指針的問題:at org.springframework.cloud.openfeign.ribbon.FeignLoadBalancer. (FeignLoadBalancer.java:72)


這個問題整整搞了老子三天多,萬惡的百度,全都是 cv 大法帖,沒有一個說到點的,而且不知道是不是沒有人遇到這個問題,相關的帖子也很少,

本來也決定放棄了,因為重新新建工程寫 demo 又跑通了,但是看到整合在舊項目里面的代碼,就是跑不起來,又不甘心,還是較真了起來,最后在第三天的晚上,終於解決了,

好了,說了一堆廢話,下面看具體什么原因:

本人是使用 springboot 整合 openFeign 的,相關 maven 和版本號如下:

<!-- 使用 openfeign 做 rpc 遠程調用(默認是 2.1.0.RELEASE ) -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- nacos 版本號要和下面的 springCloud 版本號對應 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>

<!-- ↓↓↓↓ springCloud 部分 ↓↓↓↓ -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>

1、yml 文件里面的服務名,要和 @FeignClient(value = "xxx") 里面的 xxx 一樣,切記別弄錯

2、啟動類 main 方法,要在所有模塊最外層,保證能掃描到你的 feign 和 service 層的服務

3、IClientConfig 類,重點來了,就是這個類,如果不自己定義(openFeign 是可以自定義這個類的,然后自己初始化),那么就千萬不要自己去創建一個 bean 出來,然后自己加上注解定義成配置類如下:

@Configuration
public class IClientConfig {
@Bean
public DefaultClientConfigImpl iClientConfig(){
return new DefaultClientConfigImpl();
}
}
這玩意千萬不要在程序里自己創建出來,可能很多初學者不是很懂,一開始有配置了這個,結果又只是單純的 return 了一個沒有任何屬性的 DefaultClientConfigImpl 對象,然后 openFeign 就會使用你創建的這個對象,結果
去初始化的時候,就會在源碼里面報空指針異常,把這玩意去掉,基本就可以了,如果要自己定義,那記得把里面該有的屬性都要初始化值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM