SpringBoot做全局的日期格式化LocalDateTime

一、简介

你还在一个一个的加@JsonFormat吗?那你就out啦!逐一对实体类中的日期类型的成员加@JsonFormat实在是有点繁琐。springboot为大家准备了日期格式化 ${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}。让我们一起来康康怎么全局配置吧。

二、全局配置

  1. 在application.yml文件中添加属性
spring:
 #时间戳统一转换
  jackson:
  	date-format: yyyy-MM-dd HH:mm:ss
  	time-zone: GMT+8

此处设置成功后,date类型日期已经可以全局格式化。

  1. 新建配置类-兼容LocalDateTime
    只需要用@Configuration定义一个配置类,注入两个Bean即可完成全局日期格式化处理。
@Configuration
public class LocalDateTimeSerializerConfig {
     

    @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")
    private String pattern;

    @Bean
    public LocalDateTimeSerializer localDateTimeDeserializer() {
     
        return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
    }

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
     
        return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeDeserializer());
    }
}

这种方式可支持 Date 类型和 LocalDateTime 类型并存,现在全局时间格式是yyyy-MM-dd HH:mm:ss。
那有人会问了,如果有的字段需要yyyy-MM-dd的格式怎么办呢?
那就需要配合@JsonFormat注解使用,在需要不同格式的字段属性前加@JsonFormat注解就可以了,@JsonFormat注解的优先级比较高,会以@JsonFormat注解标注的时间格式为主。


以上如有不对的地方,请大家指出改正!

你可能感兴趣的:(springboot,spring,boot,java)