在 spring cloud 的 Edgware.SR3 版项目中配置 feign 的 hystrix, 发现不生效。
在 spring 的 sts 中可以看到如下错误提示
Unknown property 'feign.hystrix'。
下载相关源码,找到如下代码:
// 此代码位于 org.springframework.cloud.netflix.feign.FeignClientsConfiguration$HystrixFeignConfiguration
@Configuration
@ConditionalOnClass({ HystrixCommand.class, HystrixFeign.class })
protected static class HystrixFeignConfiguration {
@Bean
@Scope("prototype")
@ConditionalOnMissingBean
@ConditionalOnProperty(name = "feign.hystrix.enabled", matchIfMissing = false)
public Feign.Builder feignHystrixBuilder() {
return HystrixFeign.builder();
}
}
可以看到,开启 HystrixFeign 的条件有2个:
@ConditionalOnClass({ HystrixCommand.class, HystrixFeign.class })
@ConditionalOnProperty(name = "feign.hystrix.enabled", matchIfMissing = false)
第二项似乎哪里除了问题导致 HystrixFeign 没有启用。
解决办法也很简单,在自己的项目中手动开启即可:
@Configuration
public class SybnHystrixFeignConfiguration {
@Bean
@Scope("prototype")
public Feign.Builder feignHystrixBuilder() {
return Feign.builder();
}
}