How to Create a Bean of Type FeignClient
https://www.czetsuyatech.com/2022/11/spring-cloud-create-feignclient-bean.html
This class creates a bean that returns FeignClient constructed using FeignHttpClientProperties properties.
package com.czetsuyatech.traceability.feign.config;
import com.amazonaws.xray.proxies.apache.http.HttpClientBuilder;
import feign.Client;
import feign.httpclient.ApacheHttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.springframework.cloud.openfeign.FeignFormatterRegistrar;
import org.springframework.cloud.openfeign.support.FeignHttpClientProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.datetime.standard.DateTimeFormatterRegistrar;
@Configuration(proxyBeanMethods = false)
@ConditionalFeignEnabled
public class FeignClientConfiguration {
@Bean
public Client client(HttpClientBuilder httpClientBuilder, FeignHttpClientProperties httpClientProperties) {
httpClientBuilder = httpClientBuilder != null ? httpClientBuilder : HttpClientBuilder.create();
final PoolingHttpClientConnectionManager poolingHttpClientConnectionManager =
new PoolingHttpClientConnectionManager();
poolingHttpClientConnectionManager.setDefaultMaxPerRoute(100);
poolingHttpClientConnectionManager.setMaxTotal(100);
final RequestConfig defaultRequestConfig = RequestConfig.custom()
.setConnectionRequestTimeout(100)
.setConnectTimeout(httpClientProperties.getConnectionTimeout())
.setSocketTimeout(100)
.setRedirectsEnabled(httpClientProperties.isFollowRedirects())
.build();
return new ApacheHttpClient(
httpClientBuilder
.setConnectionManager(poolingHttpClientConnectionManager)
.setDefaultRequestConfig(defaultRequestConfig)
.build()
);
}
@Bean
public FeignFormatterRegistrar localDateFeignFormatterRegister() {
return registry -> {
DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar();
registrar.setUseIsoFormat(true);
registrar.registerFormatters(registry);
};
}
}




Post a Comment