1. @JsonFormat
注解的使用
- 作用:
@JsonFormat
用于指定 JSON 序列化和反序列化时的格式。
pattern
: 用于指定日期或时间的格式。例如:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
用于定义时间格式。
shape
: 用于指定数据的形状。JsonFormat.Shape.STRING
表示将数据序列化为字符串形式。对于 LocalDateTime
,可以控制其作为字符串输出。
- 区别:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
仅指定了格式。
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
表示将日期/时间对象作为字符串进行序列化。
- 关于
LocalDateTime
:如果想要接收前端传递的时间格式为 "yyyy-MM-dd HH:mm:ss"
,可以直接在字段上使用 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
来定义该字段的格式化。
2. MappingJackson2HttpMessageConverter
配置
- 目的: 自定义消息转换器以全局配置日期时间格式。
- 方法:
- 通过
extendMessageConverters
方法可以为 HttpMessageConverter
增加自定义配置,比如设置 MappingJackson2HttpMessageConverter
的 ObjectMapper
,用于全局配置日期时间格式。
- 通过自定义的
JacksonObjectMapper
类,可以在整个应用中统一管理日期和时间格式。
- 优点:
- 一次性配置后,所有
LocalDateTime
类型字段都会按照统一的格式处理,避免在字段上反复加注解。
3. 代码实现
- BeanUtils.copyProperties 方法用于将一个对象的属性值复制到另一个对象。如果目标对象和源对象之间的属性名一致且类型匹配,
copyProperties
会自动完成属性的复制。该方法在实现数据传输对象 (DTO) 到实体对象的转换时非常有用。