
org.zalando.putittorest.HttpClientFactoryBean Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of put-it-to-rest Show documentation
Show all versions of put-it-to-rest Show documentation
Spring Boot REST Client Auto Configuration
The newest version!
package org.zalando.putittorest;
import org.apache.http.HttpRequestInterceptor;
import org.apache.http.HttpResponseInterceptor;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.concurrent.TimeUnit;
@Component
class HttpClientFactoryBean implements FactoryBean {
private final HttpClientBuilder builder = HttpClientBuilder.create();
private final RequestConfig.Builder config = RequestConfig.custom();
private HttpClientCustomizer customizer = $ -> {};
public void setFirstRequestInterceptors(final List interceptors) {
interceptors.forEach(builder::addInterceptorFirst);
}
public void setLastRequestInterceptors(final List interceptors) {
interceptors.forEach(builder::addInterceptorLast);
}
public void setLastResponseInterceptors(final List interceptors) {
interceptors.forEach(builder::addInterceptorLast);
}
public void setConnectTimeout(final int connectTimeout) {
config.setConnectTimeout(connectTimeout);
}
public void setSocketTimeout(final int socketTimeout) {
config.setSocketTimeout(socketTimeout);
}
public void setCustomizer(final HttpClientCustomizer customizer) {
this.customizer = customizer;
}
@Override
public CloseableHttpClient getObject() {
builder.setDefaultRequestConfig(config.build());
builder.setConnectionTimeToLive(30, TimeUnit.SECONDS);
customizer.customize(builder);
return builder.build();
}
@Override
public Class> getObjectType() {
return CloseableHttpClient.class;
}
@Override
public boolean isSingleton() {
return true;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy