123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package net.lab1024.smartadmin.config;
- import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.config.RequestConfig;
- import org.apache.http.config.Registry;
- import org.apache.http.config.RegistryBuilder;
- import org.apache.http.conn.socket.ConnectionSocketFactory;
- import org.apache.http.conn.socket.PlainConnectionSocketFactory;
- import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
- import org.apache.http.impl.client.HttpClientBuilder;
- import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.http.MediaType;
- import org.springframework.http.client.ClientHttpRequestFactory;
- import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
- import org.springframework.http.converter.FormHttpMessageConverter;
- import org.springframework.http.converter.HttpMessageConverter;
- import org.springframework.http.converter.StringHttpMessageConverter;
- import org.springframework.web.client.RestTemplate;
- import java.nio.charset.Charset;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * [ ]
- *
- * @author yandanyang
- * @version 1.0
- * @company 1024lab.net
- * @copyright (c) 2019 1024lab.netInc. All rights reserved.
- * @date
- * @since JDK1.8
- */
- @Configuration
- public class SmartRestTemplateConfig {
- @Value("${http.pool.max-total}")
- private Integer maxTotal;
- @Value("${http.pool.default-max-per-route}")
- private Integer defaultMaxPerRoute;
- @Value("${http.pool.socket-timeout}")
- private Integer socketTimeout;
- @Value("${http.pool.connect-timeout}")
- private Integer connectTimeout;
- @Value("${http.pool.connection-request-timeout}")
- private Integer connectionRequestTimeout;
- @Bean
- public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
- return new RestTemplate(factory);
- }
- @Bean
- public ClientHttpRequestFactory httpRequestFactory() {
- HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient());
- return factory;
- }
- /**
- * fastJsonRestTemplate
- *
- * @return
- */
- @Bean(name = "fastJsonRestTemplate")
- public RestTemplate fastJsonRestTemplate() {
- RestTemplate restTemplate = new RestTemplate(httpRequestFactory());
- HttpMessageConverter<?> converter = new StringHttpMessageConverter(Charset.forName("UTF-8"));
- FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
- List<MediaType> fastMediaTypes = new ArrayList<>();
- fastMediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED);
- fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
- fastConverter.setSupportedMediaTypes(fastMediaTypes);
- List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters();
- converters.add(1,converter);
- converters.add(fastConverter);
- return restTemplate;
- }
- @Bean
- public HttpClient httpClient() {
- Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
- .register("http", PlainConnectionSocketFactory.getSocketFactory())
- .register("https", SSLConnectionSocketFactory.getSocketFactory())
- .build();
- PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry);
- connectionManager.setMaxTotal(maxTotal);
- connectionManager.setDefaultMaxPerRoute(defaultMaxPerRoute);
- RequestConfig requestConfig = RequestConfig.custom()
- .setSocketTimeout(socketTimeout)
- .setConnectTimeout(connectTimeout)
- .setConnectionRequestTimeout(connectionRequestTimeout)
- .build();
- return HttpClientBuilder.create()
- .setDefaultRequestConfig(requestConfig)
- .setConnectionManager(connectionManager)
- .build();
- }
- }
|