feat:工具类和配置文件的更新

This commit is contained in:
Zhujx
2025-07-25 17:28:23 +08:00
parent 49b16bd6dd
commit 62d83dfe0a
5 changed files with 184 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
package com.xiang.xservice.basic.config;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @Author: xiang
* @Date: 2025-07-25 15:56
*/
@Configuration
public class GlobalJacksonConfig {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
// 设置null字段也序列化
mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);
return mapper;
}
}

View File

@@ -0,0 +1,56 @@
package com.xiang.xservice.basic.config;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import java.util.concurrent.TimeUnit;
/**
* @Author: xiang
* @Date: 2025-07-25 16:31
*/
@Configuration
public class HttpClientConfig {
@Bean
public HttpComponentsClientHttpRequestFactory clientHttpRequestFactory() {
// 连接池管理器
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
// 整个连接池最大连接数
connectionManager.setMaxTotal(100);
// 每个主机的最大连接数
connectionManager.setDefaultMaxPerRoute(20);
// 请求配置
RequestConfig requestConfig = RequestConfig.custom()
// 建立连接的超时时间
.setConnectTimeout(5000)
// 响应超时时间
.setSocketTimeout(10000)
// 从连接池获取连接的超时时间
.setConnectionRequestTimeout(1000)
.build();
// 创建 HttpClient
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(connectionManager)
.setDefaultRequestConfig(requestConfig)
// 清理空闲连接
.evictIdleConnections(30, TimeUnit.SECONDS)
.build();
// 配置给 RestTemplate 使用
return new HttpComponentsClientHttpRequestFactory(httpClient);
}
@Bean
public RestTemplate restTemplate(HttpComponentsClientHttpRequestFactory factory) {
return new RestTemplate(factory);
}
}

View File

@@ -21,9 +21,23 @@ public class DateUtils {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return LocalDateTime.parse(dateTimeStr, formatter);
}
public static LocalDateTime getTimeFromStr(String str) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return LocalDateTime.parse(str, formatter);
}
public static LocalDate getDateFromStr(String date) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
return LocalDate.parse(date, formatter);
}
public static LocalDateTime getDateTimeFromStr(String dateTime) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
return LocalDateTime.parse(dateTime, formatter);
}
public static String getDateTimeStr(LocalDateTime dateTime) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return dateTime.format(formatter);
}
}

View File

@@ -9,12 +9,14 @@ import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;
import java.io.Closeable;
import java.io.IOException;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
/**
* @Author: xiang
@@ -29,6 +31,31 @@ public class HttpUtils {
private static final int defaultMaxPerRoute = 500;
private static final int maxTotal = 2000;
private static final RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(connectTimeout)
.setSocketTimeout(socketTimeOut)
.setConnectionRequestTimeout(connectionRequestTimeout)
.build();
// 使用连接池
private static final PoolingHttpClientConnectionManager connectionManager;
private static final CloseableHttpClient httpClient;
static {
connectionManager = new PoolingHttpClientConnectionManager();
// 最大连接数
connectionManager.setMaxTotal(maxTotal);
// 每个主机的最大连接数
connectionManager.setDefaultMaxPerRoute(defaultMaxPerRoute);
httpClient = HttpClients.custom()
.setConnectionManager(connectionManager)
.setDefaultRequestConfig(requestConfig)
// 清理空闲连接
.evictIdleConnections(30, TimeUnit.SECONDS)
.build();
}
public static String doPost(String url, Map<String, String> header, String jsonParams) {
RequestConfig requestConfig = RequestConfig.custom()
// 设置连接超时时间
@@ -55,6 +82,54 @@ public class HttpUtils {
return result;
}
public static String doPostV2(String url, Map<String, String> header, String jsonParams) {
CloseableHttpResponse response = null;
String result = "";
try {
log.info("HTTP请求请求参数===>{}", jsonParams);
HttpPost httpPost = getPost(url, header, jsonParams);
response = httpClient.execute(httpPost);
result = EntityUtils.toString(response.getEntity(), "utf-8");
} catch (Exception e) {
log.error("doPost异常", e);
} finally {
// 不关闭 httpClient
closeResource(response);
}
return result;
}
public static String doGetV2(String url, Map<String, String> header, Map<String, String> param) {
CloseableHttpResponse response = null;
String result = "";
try {
StringBuilder requestUrl = new StringBuilder(url);
if (MapUtils.isNotEmpty(param)) {
requestUrl.append("?");
param.forEach((k, v) -> requestUrl.append(k).append("=").append(v).append("&"));
// 去掉最后一个 &
requestUrl.setLength(requestUrl.length() - 1);
}
HttpGet httpGet = new HttpGet(requestUrl.toString());
httpGet.addHeader("Content-Type", "application/json");
if (MapUtils.isNotEmpty(header)) {
header.forEach(httpGet::setHeader);
}
log.info("doGet请求请求地址{}", requestUrl);
response = httpClient.execute(httpGet);
result = EntityUtils.toString(response.getEntity(), "utf-8");
} catch (Exception e) {
log.error("doGet异常", e);
} finally {
closeResource(response);
}
return result;
}
private static HttpPost getPost(String url, Map<String, String> header, String jsonParams) {
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("Content-Type", "application/json");

View File

@@ -0,0 +1,18 @@
package com.xiang.xservice.basic.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
/**
* @Author: xiang
* @Date: 2025-07-25 15:58
*/
public class JsonUtils {
public static String toJsonString(Object obj) {
return JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue);
}
public static <T> T parse(String json, Class<T> clazz) {
return JSON.parseObject(json, clazz);
}
}