当前位置: 首页 > news >正文

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;

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

http://www.cnnetsun.cn/news/152862.html

相关文章:

  • REAL-Video-Enhancer终极教程:5分钟掌握免费视频增强神器
  • Win11 VMware蓝屏修复终极方案:告别虚拟机崩溃困扰
  • Langchain-Chatchat社区生态现状与发展前景展望
  • LlamaIndex架构解密:7步构建高性能LLM数据管理系统 [特殊字符]
  • Langchain-Chatchat本地知识库问答系统实战:如何用GPU加速大模型推理
  • 深度剖析:群晖DS920+定制化引导镜像的构建奥秘
  • 【Open-AutoGLM实战排障系列】:从零搞定手机连接的6步标准化网络配置流程
  • Gymnasium环境版本控制实战:企业级强化学习复现性终极指南
  • 模型识别不准怎么办?资深工程师亲授Open-AutoGLM调优7大绝招
  • 权限拒绝频发?Open-AutoGLM授权失败的7种场景与应对策略
  • Open-AutoGLM配对总失败?别急,这4个网络设置你很可能没改对
  • AI+散热设计结合
  • 8个降AI率工具,专科生高效避坑指南
  • 5‘-Biotin Phosphoramidite,135137-87-0,实现目标分子的高效捕获
  • 【Open-AutoGLM中文乱码终极解决方案】:20年专家亲授输入修复三步法
  • 智能测试的并行化策略:加速高质量软件交付
  • FaceFusion与Node-RED物联网逻辑引擎集成设想
  • 5步掌握Windows高效屏幕录制:wcap工具完全指南
  • 求真AI打造全球最大百科知识门户,容量超维基百科6000倍 | 美通社头条
  • markdown-processor:一款使用 Python 编写的强大的 Markdown 处理工具,提供 Markdown 文本格式化和图片管理功能。
  • FaceFusion在智能家居控制界面中的个性化头像生成
  • 视觉驱动真的更稳定吗?Open-AutoGLM两大模式压测结果震惊业内
  • Accelerated C++:快速掌握C++编程核心技能的终极指南
  • WingetUI离线部署技术解析:企业环境下的高效解决方案
  • 【真人实测】Java企业级AI编码工具横评:效率狂升70%+,零安全漏洞落地验证
  • Open-AutoGLM启动卡在加载权重?,资深架构师教你4招快速恢复运行
  • 鲸鸿动能斩获2025 Morketing Awards 灵眸奖三项大奖
  • Rust跨平台编译终极指南:用cross实现嵌入式开发快速上手
  • Higress Istio集成实战:深度打通云原生网关与服务网格
  • 揭秘什么是RCE漏洞:黑客如何隔空控制你的电脑?