dco*_*zin 7 java spring-boot spring-cloud-feign
我有几个 Feign 客户端,具有不同的配置。常见的配置如下所示
public class FeignLogConfig {
@Bean
public LogOkHttpInterceptor LogOkHttpInterceptor() { //custom interceptor
return new LogOkHttpInterceptor();
}
@Bean
public feign.okhttp.OkHttpClient okHttpClient(LogOkHttpInterceptor interceptor) {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.addInterceptor(interceptor);
return new feign.okhttp.OkHttpClient(builder.build());
}
}
Run Code Online (Sandbox Code Playgroud)
可以进一步扩展
public class FeignRetryerConfig extends FeignLogConfig {
@Bean
public Retryer retryer() {
return new Retryer.Default(100, 500, 5);
}
}
Run Code Online (Sandbox Code Playgroud)
或者简单地
public class FeignEmptyConfig extends FeignLogConfig {}
Run Code Online (Sandbox Code Playgroud)
客户端注释为
@FeignClient(value = "retryClient", url = url, configuration = FeignRetryerConfig.class)
Run Code Online (Sandbox Code Playgroud)
或者
@FeignClient(value = "logClient", url = url, configuration = FeignLogConfig.class)
Run Code Online (Sandbox Code Playgroud)
实际上会使用定义的拦截器,但是
@FeignClient(value = "emptyClient", url = url, configuration = FeignEmptyConfig.class)
Run Code Online (Sandbox Code Playgroud)
不会使用LogOkHttpInterceptor. 我在文档中找不到解释,所以我不知道我是否真的遗漏了一些东西。
可以在这里找到一个最小的例子。
编辑:对我来说,目前似乎与 Feign 无关,而是与 Spring 如何聚合配置有关。虽然上面的方法FeignEmptyConfig不起作用,但下面的方法却有效!
@Import(CommonFeignConfig.class)
public class EmptyFeignConfig {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |