最美的时光|3种Springboot全局时间格式化方式,提高开发效率利器( 二 )

【最美的时光|3种Springboot全局时间格式化方式,提高开发效率利器】看到 Date 和 LocalDate 两种时间类型格式化成功 , 此种方式有效 。
最美的时光|3种Springboot全局时间格式化方式,提高开发效率利器@JsonComponent 注解处理格式化
但还有个问题 , 实际开发中如果我有个字段不想用全局格式化设置的时间样式 , 想自定义格式怎么办?
那就需要和 @JsonFormat 注解配合使用了 。
@Datapublic class OrderDTO {@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")private LocalDateTime createTime;@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")private Date updateTime;}从结果上我们看到 @JsonFormat 注解的优先级比较高 , 会以 @JsonFormat 注解的时间格式为主 。
最美的时光|3种Springboot全局时间格式化方式,提高开发效率利器三、@Configuration 注解这种全局配置的实现方式与上边的效果是一样的 。

注意:在使用此种配置后 , 字段手动配置@JsonFormat 注解将不再生效 。

@Configurationpublic class DateFormatConfig2 {@Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")private String pattern;public static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");@Bean@Primarypublic ObjectMapper serializingObjectMapper() {ObjectMapper objectMapper = new ObjectMapper();JavaTimeModule javaTimeModule = new JavaTimeModule();javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer());javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer());objectMapper.registerModule(javaTimeModule);return objectMapper;}/*** @author xiaofu* @description Date 时间类型装换* @date 2020/9/1 17:25*/@Componentpublic class DateSerializer extends JsonSerializer {@Overridepublic void serialize(Date date, JsonGenerator gen, SerializerProvider provider) throws IOException {String formattedDate = dateFormat.format(date);gen.writeString(formattedDate);}}/*** @author xiaofu* @description Date 时间类型装换* @date 2020/9/1 17:25*/@Componentpublic class DateDeserializer extends JsonDeserializer {@Overridepublic Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {try {return dateFormat.parse(jsonParser.getValueAsString());} catch (ParseException e) {throw new RuntimeException("Could not parse date", e);}}}/*** @author xiaofu* @description LocalDate 时间类型装换* @date 2020/9/1 17:25*/public class LocalDateTimeSerializer extends JsonSerializer {@Overridepublic void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {gen.writeString(value.format(DateTimeFormatter.ofPattern(pattern)));}}/*** @author xiaofu* @description LocalDate 时间类型装换* @date 2020/9/1 17:25*/public class LocalDateTimeDeserializer extends JsonDeserializer {@Overridepublic LocalDateTime deserialize(JsonParser p, DeserializationContext deserializationContext) throws IOException {return LocalDateTime.parse(p.getValueAsString(), DateTimeFormatter.ofPattern(pattern));}}}


推荐阅读