[SPRING] 방법 - Spring IoC 및 HttpClient 4.3.1 CloseableHttpClient?
SPRING방법 - Spring IoC 및 HttpClient 4.3.1 CloseableHttpClient?
Spring IoC에서 CloseableHttpClient 객체를 구성하고이를 내 클래스에 삽입하여 XML을 통해 구성을 사용자 정의 할 수 있도록하고 싶습니다.
내가 볼 수 있듯이, HttpClient는이 패턴을 매우 강하게 저항하는 것으로 보입니다. 그들은 너 같은 일을하기 바래.
CloseableHttpClient chc =
HttpClients.custom().set<thing that should be a property>().build();
Ick.
거기에 사용할 수있는 Singleton CloseableHttpClient 빈을 만들기위한 메커니즘이 없습니까?
해결법
-
==============================
1.이것은 나를 위해 작동하는 것 :
이것은 나를 위해 작동하는 것 :
<bean id="requestConfigBuilder" class="org.apache.http.client.config.RequestConfig" factory-method="custom"> <property name="socketTimeout" value="${socketTimeoutInMillis}" /> <property name="connectTimeout" value="${connectionTimeoutInMillis}" /> </bean> <bean id="requestConfig" factory-bean="requestConfigBuilder" factory-method="build" /> <bean id="httpClientBuilder" class="org.apache.http.impl.client.HttpClientBuilder" factory-method="create"> <property name="defaultRequestConfig" ref="requestConfig" /> </bean> <bean id="httpClient" factory-bean="httpClientBuilder" factory-method="build" />
소켓과 연결 시간 초과가 구성된 "httpClient"빈에서 CloseableHttpClient를 제공합니다. requestConfigBuilder 또는 httpClientBuilder에 더 많은 특성을 추가 할 수 있어야합니다.
-
==============================
2.Java 구성을 사용하면 다음과 같이 간단합니다.
Java 구성을 사용하면 다음과 같이 간단합니다.
@Bean public CloseableHttpClient httpClient() { HttpClientBuilder builder = HttpClientBuilder.create(); builder.setEverything(everything); // configure it CloseableHttpClient httpClient = builder.build(); }
XML 설정을 사용하면 좀 더 복잡해집니다. 모든 호출을 HttpClientBuilder에 위임하고 getObject () 내에서 build ()를 호출하는 자체 FactoryBean 구현, 즉 CloseableHttpClientFactoryBean을 작성할 수 있습니다.
public class CloseableHttpClientFactoryBean implements FactoryBean<CloseableHttpClient> { private HttpClientBuilder builder; public CloseableHttpClientFactoryBean() { builder = HttpClientBuilder.create(); } ... // all the setters // for example public void setEverything(Everything everything) { // delegate builder.setEverything(everything); } public CloseableHttpClient getObject() { return builder.build(); } }
그리고 설정
<bean name="httpClient" class="com.spring.http.clients.CloseableHttpClientFactoryBean"> <property name="everything" ref="everything"/> </bean>
각 HttpClientBuilder 메서드에 대한 setter 메서드가 필요합니다.
사용자 정의 구성이 필요하지 않은 경우 factory-method를 사용하여 기본 CloseableHttpClient를 가져올 수 있습니다
<bean name="httpClient" class="org.apache.http.impl.client.HttpClients" factory-method="createDefault" > </bean>
from https://stackoverflow.com/questions/20340470/how-to-spring-ioc-and-httpclient-4-3-1-closeablehttpclient by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 왜 우리는 아파치 일반적인 로깅 항아리 봄 프레임 워크를 설치하는 일식 필요 (0) | 2019.03.29 |
---|---|
[SPRING] Spring에서 Excel 다운로드 가능 파일 반환 (0) | 2019.03.29 |
[SPRING] 애스펙트 클래스의 클래스 변수 액세스 (0) | 2019.03.29 |
[SPRING] Quartz Scheduler : 모든 클러스터 노드에서 일부 작업을 트리거하고 클러스터마다 한 번만 트리거합니다. (0) | 2019.03.29 |
[SPRING] Spring 4에서 register-defaults = "false"와 같은 것은 무엇입니까? (0) | 2019.03.29 |