spring-cloud - 如何向库中定义的 Spring Cloud OpenFeign 客户端添加特定配置?
问题描述
我使用了一个库,它使用 spring-cloud-openfeign 定义了一些 OpenFeign 客户端。我需要向这些客户端添加一个拦截器,以在不更改库代码的情况下添加授权标头。
到目前为止,我只是将拦截器定义为 Spring bean,一切正常。但是现在我添加了另一个需要不同拦截器的 OpenFeign 客户端,我使用注释的configuration
属性定义了它。@FeignClient
我的问题是新客户端现在获得了两个拦截器。
我尝试使用应用程序属性配置第一个拦截器,但拦截器需要注入另一个 bean,这似乎需要将其定义为 bean,这将再次将其添加到第二个客户端。
我还尝试找到与 CDI@Typed
注释等效的内容,以便仅在查找它的具体类时才能找到拦截器,而在查找RequestInterceptor
接口时却找不到,但找不到任何接口。
有什么方法可以将配置添加到库中定义的 OpenFeign 客户端,这样它就不会影响任何其他客户端?
解决方案
你可以创建一个自定义的 feign 配置。
@FeignClient(name = "stores", configuration = CustomConfiguration.class)
public interface StoreClient {
//..
}
并且您的自定义配置将调用您的自定义拦截器。您可以在自定义拦截器中实现一些逻辑。
if (request uri contains some pattern) add some headers
推荐阅读
- php - 为什么 Jetstream 无法在我的 PC 上的 laravel 8 上安装
- javascript - 尝试使用 rpc.query 将数据从 javascript 发送到 python POS odoo
- firebase - 如何使用 ListView.builder 获取某个集合的特定 Firestore 文档
- python-3.x - 简单代码中的 type() 函数 SyntaxError
- linux - 将文件(特定扩展名)从文件夹结构复制到另一个文件夹
- kubernetes - 如何为 StateFulSet 使用存储类?我必须创建 PVC 吗?
- swiftui - SwiftUI 列表背景的默认颜色是什么?
- javascript - 将数据绑定到 Angular 中的级联下拉/自动完成列表的正确方法是什么?
- python - 如何在 Django Rest Framework 中添加后缀 url?
- api - 当我调用数据时,我的 api 总是返回 null