From 284f6dafb03c64cdcddf5f02c1abf82fadce2145 Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Thu, 6 Feb 2025 13:42:16 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=20web=20?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=85=A8=E5=B1=80=E9=85=8D=E7=BD=AE=E5=92=8C?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/youlai/boot/config/WebMvcConfig.java | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/youlai/boot/config/WebMvcConfig.java b/src/main/java/com/youlai/boot/config/WebMvcConfig.java index ec938575..41fa407b 100644 --- a/src/main/java/com/youlai/boot/config/WebMvcConfig.java +++ b/src/main/java/com/youlai/boot/config/WebMvcConfig.java @@ -1,14 +1,10 @@ package com.youlai.boot.config; -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateTime; -import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; -import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import jakarta.validation.Validation; import jakarta.validation.Validator; import jakarta.validation.ValidatorFactory; @@ -24,15 +20,13 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.math.BigInteger; import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; import java.util.List; +import java.util.TimeZone; /** - * WebMvc 自动装配配置 + * Web 配置 * - * @author Ray + * @author Ray.Hao * @since 2020/10/16 */ @Configuration @@ -47,21 +41,22 @@ public class WebMvcConfig implements WebMvcConfigurer { @Override public void configureMessageConverters(List> converters) { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); - ObjectMapper objectMapper = jackson2HttpMessageConverter.getObjectMapper(); - objectMapper.registerModule(new JavaTimeModule()); - objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true); - objectMapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true); + ObjectMapper objectMapper = new ObjectMapper(); - // 处理 Long 和 BigInteger 类型,避免前端精度丢失问题 + // 注册 JavaTimeModule(替代手动注册 LocalDateTimeSerializer) + JavaTimeModule javaTimeModule = new JavaTimeModule(); + objectMapper.registerModule(javaTimeModule); + + // 配置全局日期格式和时区 + objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); + objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8")); + + // 处理 Long/BigInteger 的精度问题 SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(Long.class, ToStringSerializer.instance); simpleModule.addSerializer(BigInteger.class, ToStringSerializer.instance); - simpleModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer( - DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN).withZone(ZoneId.of( "GMT+8")) - )); objectMapper.registerModule(simpleModule); - objectMapper.setDateFormat(new SimpleDateFormat(DatePattern.NORM_DATETIME_PATTERN)); - jackson2HttpMessageConverter.setObjectMapper(objectMapper); converters.add(1, jackson2HttpMessageConverter);