你还在用@DateTimeFormat?有没有更好的方法?

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 你还在用@DateTimeFormat?有没有更好的方法?

正文


平时的工作中,后端接口一定会有日期的类型,我们是怎么处理的呢?以前的处理方式:

  1. 使用@DateTimeFormat(pattern = "yyyy-MM-dd")
  2. 直接使用用字符串接受,具体的处理在我们的代码中完成日期的转换。

虽然上面的可以解决我们的问题,但是编码比较乱,后期维护难度比较大,这是我们怎么做才可以实现日期的转换呢?下面介绍一下好的方法


环境介绍:

本测试用例采用的是Spring-Boot项目,版本为1.5.9 ,当然 Spring-MVC也是一样的。

首先,我们不在请求接口的地方设置请求日期的类型:

30.png

请求测试:

28.png

根据我们的返回,可以知道,是没有String到Date的转换的组建。

我们找到了问题的原因,我们根据源码寻找是什么类才可以转换。

在我们的org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser这个类中可以看到:

27.png

实际上是给我们的Spring容器定义了一个

FormattingConversionServiceFactoryBean

这个对象,也就是

FormattingConversionService

这个类的组建对象,根据源码,问题就很好解决了,我们可以自定义一个转换器:

26.png

用作与字符串到日期的转换,之后,我们根据bean的生命周期,可以定一个后置处理器修改改组建的一些属性:

25.png

理论上,我们的日期可以正确的解析了,测试一下:

24.png

成功的返回,说明我们的配置成功啦!!

这么做有什么好处呢?好处都在解析的位置:

22.png

看上面,我们可以定义不同的解析日期的pattern来解析我们请求的参数,实现简单方便的请求以及方便维护的结果!

目录
打赏
0
0
0
0
4
分享
相关文章
LocalDateTime的全局自定义序列化
LocalDateTime的全局自定义序列化
滚雪球学Java(51):掌握Java Date类:用法、弊端与时间戳转换技巧,助你轻松处理日期时间
【6月更文挑战第5天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
118 0
技术经验分享:JavaScript实现Date()——日期格式化的三种常用方法
技术经验分享:JavaScript实现Date()——日期格式化的三种常用方法
47 0
解密SimpleDateFormat类的线程安全问题和六种解决方案!
提起SimpleDateFormat类,想必做过Java开发的童鞋都不会感到陌生。没错,它就是Java中提供的日期时间的转化类。这里,为什么说SimpleDateFormat类有线程安全问题呢?有些小伙伴可能会提出疑问:我们生产环境上一直在使用SimpleDateFormat类来解析和格式化日期和时间类型的数据,一直都没有问题啊!接下来,我们就一起看下在高并发下SimpleDateFormat类为何会出现安全问题,以及如何解决SimpleDateFormat类的安全问题。
1904 1
解密SimpleDateFormat类的线程安全问题和六种解决方案!
Java时间格式字符串与Date的相互转化
Java时间格式字符串与Date的相互转化
706 0
Java常用日期类(包含三代)_Date类及Calendar类等
从JDK 1.0出现。 表示一个日期和时间,精确到毫秒,内部getTime()从1970年1月1号开始算。
119 0
Java重点 | DateFormat和SimpleDateFormat类
本文主要详细的介绍DateFormat和SimpleDateFormat类的使用方法,并且通过代码实战,让你对这两个类,有更深刻的印象。
147 0
Java重点 | DateFormat和SimpleDateFormat类
Java中时间日期类之Date类、SimplDateFormat类、Calendar类及二月天案例
时间日期类之Date类、SimplDateFormat类、Calendar类及二月天案例的简单示例
429 0
告别jodatime!拥抱Java8日期时间类LocalDate、LocalDateTime详解(上)
告别jodatime!拥抱Java8日期时间类LocalDate、LocalDateTime详解
246 0
告别jodatime!拥抱Java8日期时间类LocalDate、LocalDateTime详解(上)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等