只为一个客户端创建Feign配置



我有一大堆使用共享配置(MyFeignConfiguration.class(的Feign客户端:

@FeignClient(name = "clientA", url = "http://serviceA.com", fallbackFactory = ServiceAFallbackFactory.class, configuration = MyFeignConfiguration.class)
@FeignClient(name = "clientB", url = "http://serviceB.com", fallbackFactory = ServiceBFallbackFactory.class, configuration = MyFeignConfiguration.class)
@FeignClient(name = "clientC", url = "http://serviceC.com", fallbackFactory = ServiceCFallbackFactory.class, configuration = MyFeignConfiguration.class)

然而,对于一个新的客户端,我想将底层的Http客户端更改为OkHttp客户端。在MyFeignConfiguration类中,我可以添加以下内容:

@Configuration
class MyFeignConfiguration {
@Bean
public Client getClient() {
return OkHttpClient() // use the OkHttp client 
}

@Bean
public ErrorDecoder getErrorDecoder() {
//... existing configs
}

但是,现在所有的客户端都在使用这个OkHttp客户端。如何配置新的外部客户端,使其仅使用OkHttp客户端?此外,我仍然需要使用主MyFeignConfiguration类中现有的默认配置(如ErrorDecoder(。

查看文档时,有一个导入的Notehttps://cloud.spring.io/spring-cloud-openfeign/reference/html/#spring-云假装覆盖默认

FooConfiguration不需要使用@Configuration进行注释。但是,如果是,请注意将其从任何包含此配置的@ComponentScan中排除,因为它将成为foreign的默认源。解码器,伪造。编码器,外部。合同等,如有规定。这可以通过将它放在任何@ComponentScan或@SpringBootApplication的单独、不重叠的包中来避免,也可以在@ComponentScan中显式排除它。

尝试删除注释:@Configuration

您必须为您的新Feign客户端创建新的FeignConfiguration类,此外,您应该从您的Feign配置类中删除@Configuration。

相关内容

  • 没有找到相关文章

最新更新