我有几个 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 = …
Run Code Online (Sandbox Code Playgroud)