知优码

您现在的位置是:首页 > 开源项目 > 项目经验

项目经验

HttpClient4.5单例模式

2020-10-21项目经验
HttpClient4.5单例模式

一、HttpClient的作用

HttpClient实现是线程安全的。建议将此类的同一实例重用于多个请求执行。HttpClient的最基本功能是执行HTTP方法。HTTP方法的执行涉及一个或多个HTTP请求/ HTTP响应交换,通常由HttpClient在内部处理。

二、HttpClient的作用域

HttpClient在整个应用生命周期内只需要创建一个,即单例模式。Http请求属于方法作用域,每次请求新建对象即可。

三、单例模式

public class MyHttpClient {

    //多线程共享实例
    private static  CloseableHttpClient httpClient;
    //连接管理器
    private static PoolingHttpClientConnectionManager cm;

    static {
        System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2,TLSv1.3,SSLv3");

        cm = new PoolingHttpClientConnectionManager();


        cm.setDefaultMaxPerRoute(10);//每个路由的最大并发数连接
        cm.setMaxTotal(10);//总连接数


        //创建httpclient单例
        httpClient = HttpClients.custom()
                .setConnectionManager(cm)
                .evictIdleConnections(8000, TimeUnit.MILLISECONDS)//超时关闭空闲连接
                .build();
    }

    /**
     * 返回共享实例
     * @return
     */
    public static CloseableHttpClient getHttpClient() {
        return httpClient;
    }
}