记录一次OpenFeign不能FallbackIssue
(2022-03-18 21:46:14)分类: JAVA开发 |
记录一次奇诡 openFeign issue, 根本原因是 手动
@Import(FeignClientsConfiguration.class) 导致
Feign.Builder 实例类型一直错误
=== Fatal Error:
@Import(FeignClientsConfiguration.class)
public class FeignBuilderUtils implements ApplicationContextAware {
=== Success:
//@Import(FeignClientsConfiguration.class)
public class FeignBuilderUtils implements ApplicationContextAware {
class FeignClientsConfiguration {
...
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(CircuitBreaker.class)
@ConditionalOnProperty("feign.circuitbreaker.enabled")
protected
static class CircuitBreakerPresentFeignBuilderConfiguration {
@Bean
@Scope("prototype")
@ConditionalOnMissingBean({ Feign.Builder.class,
CircuitBreakerFactory.class })
public
Feign.Builder defaultFeignBuilder(Retryer retryer) {
return
Feign.builder().retryer(retryer);
<== 出错时进这里
}
@Bean
@Scope("prototype")
@ConditionalOnMissingBean
@ConditionalOnBean(CircuitBreakerFactory.class)
public
Feign.Builder circuitBreakerFeignBuilder() {
return
FeignCircuitBreaker.builder();
<== 正常应该进这里
}
...
=== Fatal
@Import(FeignClientsConfiguratio
public class FeignBuilderUtils implements ApplicationContextAware {
=== Success:
//@Import(FeignClientsConfiguratio
public class FeignBuilderUtils implements ApplicationContextAware {
class FeignClientsConfiguratio
}
OpenFeign 的自动配置 FeignAutoConfiguration 在创建 FeignContext Bean
时会 导入 FeignClientsConfiguration
前一篇:静下来,与自己相处,让自己开心