| | |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Rest模板配置类 |
| | | * @author WWW |
| | | */ |
| | | @Configuration |
| | | @SuppressWarnings("ALL") |
| | | @ConditionalOnClass(value = {RestTemplate.class, HttpClient.class}) |
| | | public class RestTemplateConfig { |
| | | /** |
| | | * 连接池的最大连接数默认为0,不限制 |
| | | */ |
| | | @Value("${remote.maxTotalConnect:0}") |
| | | private int maxTotalConnect; |
| | | |
| | | /** |
| | | * 单个主机的最大连接数 |
| | | */ |
| | | @Value("${remote.maxConnectPerRoute:1000}") |
| | | private int maxConnectPerRoute; |
| | | |
| | | /** |
| | | * 连接超时默认5s,-1为不限制 |
| | | */ |
| | | @Value("${remote.connectTimeout:5000}") |
| | | private int connectTimeout; |
| | | |
| | | /** |
| | | * 读取超时默认30s,-1为不限制 |
| | | */ |
| | | @Value("${remote.readTimeout:30000}") |
| | | private int readTimeout; |
| | | |
| | | /** |
| | | * 创建HTTP客户端工厂 |
| | | * |
| | | * @return 客户端工厂 |
| | | */ |
| | | private ClientHttpRequestFactory createFactory() { |
| | | if (this.maxTotalConnect <= 0) { |
| | | SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); |
| | |
| | | return factory; |
| | | } |
| | | |
| | | /** |
| | | * 初始化RestTemplate,并加入spring的Bean工厂,由spring统一管理 |
| | | * 必须加注解@LoadBalanced |
| | | * |
| | | * @return |
| | | */ |
| | | @Bean |
| | | @ConditionalOnMissingBean(RestTemplate.class) |
| | | public RestTemplate getRestTemplate() { |
| | | RestTemplate restTemplate = new RestTemplate(this.createFactory()); |
| | | List<HttpMessageConverter<?>> converterList = restTemplate.getMessageConverters(); |
| | | |
| | | // 重新设置StringHttpMessageConverter字符集为UTF-8,解决中文乱码问题 |
| | | HttpMessageConverter<?> converterTarget = null; |
| | | for (HttpMessageConverter<?> item : converterList) { |
| | | if (StringHttpMessageConverter.class == item.getClass()) { |