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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 你还在用@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来解析我们请求的参数,实现简单方便的请求以及方便维护的结果!

相关文章
|
XML JSON 前端开发
SpingMVC中日期格式化与转换的那些事
SpingMVC中日期格式化与转换的那些事
83 0
|
6月前
|
移动开发 JavaScript 前端开发
技术经验分享:JavaScript实现Date()——日期格式化的三种常用方法
技术经验分享:JavaScript实现Date()——日期格式化的三种常用方法
34 0
|
6月前
|
Java
java中强大的时间处理工具:Calendar类(日历类)
`Calendar`类是Java中用来处理日期和时间的类,提供了许多属性来获取日期和时间的不同部分,如年、月、日、小时等。`Calendar`的常用属性包括`YEAR`(年)、`MONTH`(月)、`DATE`/`DAY_OF_MONTH`(日)、`DAY_OF_YEAR`(一年中的第几天)、`DAY_OF_WEEK_IN_MONTH`(一月中第几个星期)、`DAY_OF_WEEK`/`WEEK_OF_MONTH`(星期)等。
114 0
|
存储 安全 Java
解密SimpleDateFormat类的线程安全问题和六种解决方案!
提起SimpleDateFormat类,想必做过Java开发的童鞋都不会感到陌生。没错,它就是Java中提供的日期时间的转化类。这里,为什么说SimpleDateFormat类有线程安全问题呢?有些小伙伴可能会提出疑问:我们生产环境上一直在使用SimpleDateFormat类来解析和格式化日期和时间类型的数据,一直都没有问题啊!接下来,我们就一起看下在高并发下SimpleDateFormat类为何会出现安全问题,以及如何解决SimpleDateFormat类的安全问题。
1812 1
解密SimpleDateFormat类的线程安全问题和六种解决方案!
|
Java API
Java常用日期类(包含三代)_Date类及Calendar类等
从JDK 1.0出现。 表示一个日期和时间,精确到毫秒,内部getTime()从1970年1月1号开始算。
110 0
|
Java
Java重点 | DateFormat和SimpleDateFormat类
本文主要详细的介绍DateFormat和SimpleDateFormat类的使用方法,并且通过代码实战,让你对这两个类,有更深刻的印象。
134 0
Java重点 | DateFormat和SimpleDateFormat类
|
Java
Java难点 | Calendar日历类
本文主要介绍了Calendar日历类相关的方法,通过代码实战,带你理解Calendar日历类。
112 0
Java难点 | Calendar日历类
|
Java
Java中时间日期类之Date类、SimplDateFormat类、Calendar类及二月天案例
时间日期类之Date类、SimplDateFormat类、Calendar类及二月天案例的简单示例
404 0
Java中时间日期类之Date类、SimplDateFormat类、Calendar类及二月天案例
|
敏捷开发 前端开发 测试技术
用“实例化需求”,让需求澄清更高效(下)
用“实例化需求”,让需求澄清更高效(下)
344 0
用“实例化需求”,让需求澄清更高效(下)
|
测试技术 领域建模 数据安全/隐私保护
用“实例化需求”,让需求澄清更高效(上)
用“实例化需求”,让需求澄清更高效(上)
644 0
用“实例化需求”,让需求澄清更高效(上)