首页 > 解决方案 > 如何向库中定义的 Spring Cloud OpenFeign 客户端添加特定配置?

问题描述

我使用了一个,它使用 spring-cloud-openfeign 定义了一些 OpenFeign 客户端。我需要向这些客户端添加一个拦截器,以在不更改库代码的情况下添加授权标头。

到目前为止,我只是将拦截器定义为 Spring bean,一切正常。但是现在我添加了另一个需要不同拦截器的 OpenFeign 客户端,我使用注释的configuration属性定义了它。@FeignClient我的问题是新客户端现在获得了两个拦截器。

我尝试使用应用程序属性配置第一个拦截器,但拦截器需要注入另一个 bean,这似乎需要将其定义为 bean,这将再次将其添加到第二个客户端。

我还尝试找到与 CDI@Typed注释等效的内容,以便仅在查找它的具体类时才能找到拦截器,而在查找RequestInterceptor接口时却找不到,但找不到任何接口。

有什么方法可以将配置添加到库中定义的 OpenFeign 客户端,这样它就不会影响任何其他客户端?

标签: spring-cloudspring-cloud-feignopenfeign

解决方案


你可以创建一个自定义的 feign 配置。

@FeignClient(name = "stores", configuration = CustomConfiguration.class)
public interface StoreClient {
    //..
}

并且您的自定义配置将调用您的自定义拦截器。您可以在自定义拦截器中实现一些逻辑。

if (request uri contains some pattern) add some headers


推荐阅读