正文
平时的工作中,后端接口一定会有日期的类型,我们是怎么处理的呢?以前的处理方式:
- 使用@DateTimeFormat(pattern = "yyyy-MM-dd")
- 直接使用用字符串接受,具体的处理在我们的代码中完成日期的转换。
虽然上面的可以解决我们的问题,但是编码比较乱,后期维护难度比较大,这是我们怎么做才可以实现日期的转换呢?下面介绍一下好的方法。
环境介绍:
本测试用例采用的是Spring-Boot项目,版本为1.5.9 ,当然 Spring-MVC也是一样的。
首先,我们不在请求接口的地方设置请求日期的类型:
请求测试:
根据我们的返回,可以知道,是没有String到Date的转换的组建。
我们找到了问题的原因,我们根据源码寻找是什么类才可以转换。
在我们的org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser这个类中可以看到:
实际上是给我们的Spring容器定义了一个
FormattingConversionServiceFactoryBean
这个对象,也就是
FormattingConversionService
这个类的组建对象,根据源码,问题就很好解决了,我们可以自定义一个转换器:
用作与字符串到日期的转换,之后,我们根据bean的生命周期,可以定一个后置处理器修改改组建的一些属性:
理论上,我们的日期可以正确的解析了,测试一下:
成功的返回,说明我们的配置成功啦!!
这么做有什么好处呢?好处都在解析的位置:
看上面,我们可以定义不同的解析日期的pattern来解析我们请求的参数,实现简单方便的请求以及方便维护的结果!