diff --git a/src/main/java/com/gxwebsoft/common/core/config/JacksonConfig.java b/src/main/java/com/gxwebsoft/common/core/config/JacksonConfig.java index e8ec164..c8fe5a7 100644 --- a/src/main/java/com/gxwebsoft/common/core/config/JacksonConfig.java +++ b/src/main/java/com/gxwebsoft/common/core/config/JacksonConfig.java @@ -9,9 +9,11 @@ import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; +import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.TimeZone; /** * Jackson配置类 - 强制配置版本 @@ -29,12 +31,13 @@ public class JacksonConfig { private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; /** - * 强制配置ObjectMapper,确保JavaTimeModule被正确注册 + * 使用Jackson2ObjectMapperBuilder构建ObjectMapper + * 确保与Spring Boot完全兼容 */ @Bean @Primary - public ObjectMapper objectMapper() { - ObjectMapper mapper = new ObjectMapper(); + public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) { + ObjectMapper mapper = builder.build(); // 创建并配置JavaTimeModule JavaTimeModule javaTimeModule = new JavaTimeModule(); @@ -49,9 +52,12 @@ public class JacksonConfig { // 禁用将日期写为时间戳 mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); - + // 忽略未知属性 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + // 设置时区 + mapper.setTimeZone(TimeZone.getTimeZone("GMT+8")); return mapper; } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4888d93..751eff3 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -26,6 +26,9 @@ spring: write-dates-as-timestamps: false deserialization: fail-on-unknown-properties: false + # 确保启用Java 8时间支持 + modules: + - com.fasterxml.jackson.datatype.jsr310.JavaTimeModule # 连接池配置 datasource: