如何 – Spring IoC和HttpClient 4.3.1 CloseableHttpClient?
我想让Spring IoC配置一个CloseableHttpClient
对象并将其注入我的类中,以便可以通过XML完成其配置的自定义。
从我所看到的, HttpClient
似乎非常强烈地抵制这种模式。 他们希望你做的事情
CloseableHttpClient chc = HttpClients.custom().set().build();
伊克。
是不是有一些机制可以制作一个我可以使用的单例CloseableHttpClient
bean?
这似乎对我有用:
这给了我一个“httpClient”bean中的CloseableHttpClient,配置了套接字和连接超时。 您应该能够向requestConfigBuilder或httpClientBuilder添加更多属性。
使用Java配置,这很简单
@Bean public CloseableHttpClient httpClient() { HttpClientBuilder builder = HttpClientBuilder.create(); builder.setEverything(everything); // configure it CloseableHttpClient httpClient = builder.build(); }
使用XML配置,它有点复杂。 您可以创建自己的FactoryBean
实现,比如CloseableHttpClientFactoryBean
,它将所有调用委托给HttpClientBuilder
并在getObject()
调用build()
getObject()
。
public class CloseableHttpClientFactoryBean implements FactoryBean { 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(); } }
和配置
每个HttpClientBuilder
方法都需要一个setter方法。
请注意,如果您不需要任何自定义配置,则可以使用factory-method
获取默认的CloseableHttpClient
- 如何在apache HttpClient上设置TLS版本
- Content-Length分隔邮件正文的过早结束(预期:
- 为什么我得到一个exceptionjavax.net.ssl.SSLPeerUnverifiedException:peer未经过身份validation?
- Apache PoolingHttpClientConnectionManager抛出非法状态exception
- 如何使Unirest(java)忽略证书错误
- HttpClient 4.2,基本身份validation和AuthScope
- 如何将使用HttpClient下载的文件保存到特定文件夹中
- 如何将curl -X post翻译成java
- java filechannel cpu用法随着时间的推移而增长