news 2026/8/4 4:42:57

Spring Boot全局日期格式配置方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Boot全局日期格式配置方法
spring boot中,不想每个实体类中都这样设置,有什么方法: @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime;

在Spring Boot中有几种方法可以避免在每个实体类中重复设置@JsonFormat注解:

方法一:全局配置(推荐)

application.ymlapplication.properties中配置全局的日期格式:

YAML配置:

yaml

spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 serialization: write-dates-as-timestamps: false

Properties配置:

properties

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8 spring.jackson.serialization.write-dates-as-timestamps=false

方法二:自定义Jackson配置类

java

@Configuration public class JacksonConfig { @Bean @Primary public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() { return builder -> { // 设置全局日期格式 builder.simpleDateFormat("yyyy-MM-dd HH:mm:ss"); builder.timeZone(TimeZone.getTimeZone("GMT+8")); // 针对Java 8时间API的配置 builder.serializers(new LocalDateTimeSerializer( DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); builder.deserializers(new LocalDateTimeDeserializer( DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); // 如果需要,也可以配置LocalDate等其他类型 builder.serializers(new LocalDateSerializer( DateTimeFormatter.ofPattern("yyyy-MM-dd"))); builder.deserializers(new LocalDateDeserializer( DateTimeFormatter.ofPattern("yyyy-MM-dd"))); }; } }

方法三:更详细的配置类

java

@Configuration public class JacksonConfig { @Bean @Primary public ObjectMapper objectMapper() { ObjectMapper objectMapper = new ObjectMapper(); // 设置Java 8时间模块 JavaTimeModule javaTimeModule = new JavaTimeModule(); // LocalDateTime序列化和反序列化 javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); // LocalDate序列化和反序列化 javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); objectMapper.registerModule(javaTimeModule); objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8")); return objectMapper; } }

方法四:使用Mixin(为特定类型统一配置)

java

@JsonDeserialize(using = LocalDateTimeDeserializer.class) @JsonSerialize(using = LocalDateTimeSerializer.class) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") abstract class LocalDateTimeMixin { } @Configuration public class JacksonConfig { @Bean public Jackson2ObjectMapperBuilderCustomizer addCustomSerialization() { return builder -> { builder.mixIn(LocalDateTime.class, LocalDateTimeMixin.class); }; } }

方法五:自定义注解(如果需要不同格式)

java

@Retention(RetentionPolicy.RUNTIME) @JacksonAnnotationsInside @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") public @interface DefaultDateTimeFormat { } // 使用方式 @DefaultDateTimeFormat private LocalDateTime createTime;

推荐方案

建议使用方法一(全局配置),最简单直接,能满足大部分场景。

如果项目中有多种不同的日期格式需求,可以:

  1. 使用方法一设置默认格式

  2. 对于特殊格式的字段,使用@JsonFormat覆盖全局配置

java

// 全局使用 yyyy-MM-dd HH:mm:ss // 特殊字段使用其他格式 @JsonFormat(pattern = "yyyy/MM/dd") private LocalDate specialDate;

这样既能减少重复代码,又能保持灵活性。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/4 9:14:35

4步闪电出图:Qwen-Image-Lightning如何颠覆AI创作体验

4步闪电出图:Qwen-Image-Lightning如何颠覆AI创作体验 【免费下载链接】Qwen-Image-Lightning 项目地址: https://ai.gitcode.com/hf_mirrors/lightx2v/Qwen-Image-Lightning 在AI图像生成领域,速度与质量似乎总是一对矛盾体。传统扩散模型需要5…

作者头像 李华
网站建设 2026/8/2 23:58:50

Moovie.js视频播放器终极指南:打造专业级HTML5播放体验

Moovie.js视频播放器终极指南:打造专业级HTML5播放体验 【免费下载链接】moovie.js Movie focused HTML5 Player 项目地址: https://gitcode.com/gh_mirrors/mo/moovie.js Moovie.js是一款专为电影爱好者设计的现代化HTML5视频播放器,以其出色的字…

作者头像 李华
网站建设 2026/8/3 2:49:09

FaceFusion与ButterCMS集成:轻量级网站的内容增强

FaceFusion与ButterCMS集成:轻量级网站的内容增强 在今天的数字内容战场上,用户不再满足于静态图文。他们想要互动、个性化,甚至“看见未来的自己”——比如一键换脸到明星脸上,或预览十年后的容貌变化。而与此同时,越…

作者头像 李华
网站建设 2026/8/3 10:11:34

【稀缺技术指南】Open-AutoGLM中文编码问题破解:仅需调整这3个参数

第一章:Open-AutoGLM 中文输入乱码问题概述在使用 Open-AutoGLM 模型处理中文文本时,部分用户反馈在输入阶段出现中文字符显示为乱码的现象。该问题通常出现在数据预处理、模型加载或推理接口调用过程中,严重影响了中文语义的理解与生成质量。…

作者头像 李华
网站建设 2026/8/3 14:27:04

移动端动画架构终极指南:构建企业级组件化解决方案

移动端动画架构终极指南:构建企业级组件化解决方案 【免费下载链接】lottie-ios airbnb/lottie-ios: Lottie-ios 是一个用于 iOS 平台的动画库,可以将 Adobe After Effects 动画导出成 iOS 应用程序,具有高性能,易用性和扩展性强的…

作者头像 李华
网站建设 2026/7/31 13:41:55

5个VizTracer数据管理技巧:平衡性能与存储的终极指南

5个VizTracer数据管理技巧:平衡性能与存储的终极指南 【免费下载链接】viztracer VizTracer is a low-overhead logging/debugging/profiling tool that can trace and visualize your python code execution. 项目地址: https://gitcode.com/gh_mirrors/vi/viztr…

作者头像 李华