黑马程序员技术交流社区

标题: 【上海校区】SpringBoot 全局日期格式化(基于注解) [打印本页]

作者: Cloudychen    时间: 2020-5-21 14:37
标题: 【上海校区】SpringBoot 全局日期格式化(基于注解)
SpringBoot 全局日期格式化(基于注解)学习目标
快速学会通过注解 @JsonComponent自定义日期格式化的序列化器。

使用教程
根据官方文档 Custom JSON Serializers and Deserializers ,想要接管Jackson的JSON的序列化和反序列化,只需通过注解 @JsonComponent来声明其静态内部类即可。
首先根据项目要求提供自定义的日期序列化器和反序列化器,其中包括:
然后提供相应的测试信息,这里以查询用户为例:
大功告成,接下来启动应用并访问 http://127.0.0.1:8080 ,可以拿到正确结果:
除了日期格式化解析之外,我们还可以在 DateFormatConfig 注入业务变量,例如根据当前登录人的所属时区(虽然 SimpleDateFormat默认读取了当地时区,但在实际的国际化系统中,用户的所属时区是指其在系统录入的所属时区,而不是指当地时区。例如Tony这个用户账号挂在GMT+0时区,但此时他出差在香港使用,系统仍需要按照GMT+0时区来显示时间),为了解决这个问题,此时我们可以在 DateFormatConfig 注入当前登录人然后改变日期工具类的 TimeZone来动态修改时区。
Github上最值得学习的100个Java开源项目,涵盖各种技术栈!
根据当前登录人动态展示时区:
修改完后重新启动应用并访问 http://127.0.0.1:8080 ,可以拿到正确结果:
小结
1、使用注解 @JsonComponent 可以快速自定义日期格式化的序列化器,免除传统通过模块注册的烦恼。
2、使用注解 @JsonComponent 实现与当地无关的动态时区的精髓就在于将获取当前等人的方法写在解析日期和格式化日期的代码里。
3、使用注解 @JsonComponent 是直接处理String和Date的相互转换的,所以要注意空串问题。例如dateFormat.parse()要预防空串。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2