如何使用Spring MVC的消息转换器设置日期格式

 更新时间:2023年07月13日 15:06:25   作者:openallzzz  
这篇文章主要介绍了如何使用Spring MVC的消息转换器设置日期格式,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

描述

在后端返回给前端的JSON数据中含有日期类型的子段时,如何指定该类型的日期的显示格式。

解决方案

使用Spring MVC的消息转换器即可。

1.添加配置类,并继承 WebMvcConfigurationSupport 类,重写 extendMessageConverters

  /**
   * 扩展Spring MVC框架的消息转换器
   * @param converters
   */
  @Override
  protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
      log.info("扩展消息转换器...");
      //创建一个消息转换器对象
      MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
      //需要为消息转换器对象设置一个对象转换器,对象转换器可以将Java对象序列化为JSON
      converter.setObjectMapper(new JacksonObjectMapper());
      //将自己的消息转换器加入到相关容器中,并设置优先级
      converters.add(0, converter);
  }

2.自定义对象转换器 JacksonObjectMapper,设置对应日期类型的转换格式

/**
 * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象
 * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]
 * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
 */
public class JacksonObjectMapper extends ObjectMapper {
    public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
    public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";
    public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
    public JacksonObjectMapper() {
        super();
        //收到未知属性时不报异常
        this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
        //反序列化时,属性不存在的兼容处理
        this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
        SimpleModule simpleModule = new SimpleModule()
                .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
                .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
                .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))
                .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
                .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
                .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));
        //注册功能模块 例如,可以添加自定义序列化器和反序列化器
        this.registerModule(simpleModule);
    }
}

随后问题将会被解决。

到此这篇关于使用Spring MVC的消息转换器设置日期格式的文章就介绍到这了,更多相关Spring MVC消息转换器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现数据脱敏(Desensitization)的操作指南

    Java实现数据脱敏(Desensitization)的操作指南

    数据脱敏是指通过对敏感数据进行部分或完全隐藏处理,保护敏感信息在存储和使用过程中的安全性,常见的应用场景包括日志记录、接口返回、报表展示、数据分析等,本文给大家介绍了Java实现数据脱敏(Desensitization)的操作指南,需要的朋友可以参考下
    2025-02-02
  • Java技能点之SimpleDateFormat进行日期格式化问题

    Java技能点之SimpleDateFormat进行日期格式化问题

    这篇文章主要介绍了Java技能点之SimpleDateFormat进行日期格式化问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 详解JFX11+IDEA跨平台打包发布的完美解决办法

    详解JFX11+IDEA跨平台打包发布的完美解决办法

    这篇文章主要介绍了详解JFX11+IDEA跨平台打包发布的完美解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Java的集合LinkedHashSet详解

    Java的集合LinkedHashSet详解

    这篇文章主要介绍了Java的集合LinkedHashSet详解,LinkedHashSet介于HashSet和TreeSet之间,它也是一个hash表,但是同时维护了一个双链表来记录插入的顺序,需要的朋友可以参考下
    2023-09-09
  • Java中ArrayList用法详细讲解

    Java中ArrayList用法详细讲解

    在使用集合ArrayList的时候,经常使用add、remove等,其他的没用过,甚至没听说过的还有很多,这篇文章主要介绍了Java中ArrayList用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-06-06
  • JDK源码之PriorityQueue解析

    JDK源码之PriorityQueue解析

    这篇文章主要为大家详细介绍了JDK源码之PriorityQueue,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Springboot集成Protobuf的流程步骤

    Springboot集成Protobuf的流程步骤

    在以往的项目中进行网络通信和数据交换的应用场景中,最经常使用的技术便是json或xml,但是今天在介绍一个Google的力作protobuf作为数据交换格式,文中给大家介绍了Springboot集成Protobuf的流程步骤,需要的朋友可以参考下
    2024-03-03
  • java判断回文数示例分享

    java判断回文数示例分享

    这篇文章主要介绍了java判断回文数示例,需要的朋友可以参考下
    2014-03-03
  • Java回归循环的使用方式

    Java回归循环的使用方式

    这篇文章主要介绍了Java回归循环的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • 谈谈对Java多态性的一点理解

    谈谈对Java多态性的一点理解

    多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定
    2017-08-08

最新评论