No fallback instance of type class found for feign client user-service(转)
生活随笔
收集整理的這篇文章主要介紹了
No fallback instance of type class found for feign client user-service(转)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
No fallback instance of type class found for feign client user-service(轉)
1、錯誤日志
在 feign 開啟熔斷,配置 fallback 類,實現當前接口的實現類時,報錯信息如下:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. ERROR 7204 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException:Error creating bean with name 'consumerController':
Unsatisfied dependency expressed through field 'mUserClient';
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'club.sscai.consumer.client.UserClient':
FactoryBean threw exception on object creation;
nested exception is java.lang.IllegalStateException:
No fallback instance of type class club.sscai.consumer.client.UserClientImpl found for feign client user-service
?
2、通常配置
1、開啟 hystrix(默認是關閉的):feign.hystrix.enabled=true2、Fallback 接口實現類需要注解 @Component如果到此處還沒有解決的話?請往下看。
?
3、轉載解決方案
跟蹤代碼發現 是因為對FeignClient 這個接口做了AOP切面。
@Pointcut("execution(* com.xx.xx.service.IR*.*(..))") public void remoteCall() { }Trace日志看到這么一行:
[DEBUG] [17:50:22.410][JdkDynamicAopProxy][117]:Creating JDK dynamic proxy: target source is SingletonTargetSource for target object [com.xx.xx.service.HystrixClientFallback@32354b00]
然后考慮是不是因為Spring AOP動態代理默認為 JDK動態代理。
切面還是要切的,Fallback也不能放棄。因為調用的是接口,無論如何都要被切。
換成cglib后,問題成功解決。
?
原理
SpringAOP 的動態代理有兩種實現,JDK動態代理,和Cglib。
Spring默認使用 JDK動態代理。
當類至少實現了一個接口時,使用JDK動態代理。上文的Feign的Fallback類正好是這樣。
至于究竟為什么cglib可以成功,就不去深究了,方案就兩個,非此即彼。
至于為什么 找不到 fallback instance?
問題出現在isTypeMatch
這里isTypeMatch 返回了false,因為騙不過JVM類型檢查。當使用cglib則是匹配的。
?
原文地址:https://www.jianshu.com/p/c8210d878e96
?
posted @ 2018-12-02 00:27 niceyoo 閱讀(...) 評論(...) 編輯 收藏總結
以上是生活随笔為你收集整理的No fallback instance of type class found for feign client user-service(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数理统计——随机过程
- 下一篇: docker官方文档中的dns,link