html网站制作答辩ppt写文章免费的软件
我们对字段的日期格式化时一般会用注解:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date createDate;
但是每个字段都要写也太麻烦了 不是我的全局化作风 在application.yml中配置全局时间格式化只会对Date类型有用:
jackson:date-format: yyyy-MM-dd HH:mm:sstimezone: GMT+8serialization:write-dates-as-timestamps: falsemvc:format:date: yyyy-MM-ddtime: HH:mm:ssdate-time: yyyy-MM-dd HH:mm:ss
以上是无效的 java8的时间模块比如LocalDateTime就没用了 时间依然中间有个T 所以需要额外配置 自定义一个配置类顺便把反序列化也配了:
package com.hmdp.config;import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;@Configuration
public class JacksonConfigure {@Beanpublic Jackson2ObjectMapperBuilderCustomizer customizer(@Value("${spring.mvc.format.date-time}") String dateTimeFormatPattern,@Value("${spring.mvc.format.date}") String dateFormatPattern,@Value("${spring.mvc.format.time}") String timeFormatPattern) {return jacksonObjectMapperBuilder -> {JavaTimeModule javaTimeModule = new JavaTimeModule();DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(dateTimeFormatPattern);DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(dateFormatPattern);DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern(timeFormatPattern);javaTimeModule.addSerializer(new LocalDateTimeSerializer(dateTimeFormatter));javaTimeModule.addSerializer(new LocalDateSerializer(dateFormatter));javaTimeModule.addSerializer(new LocalTimeSerializer(timeFormatter));javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter));javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(dateFormatter));javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(timeFormatter));jacksonObjectMapperBuilder.modules(javaTimeModule);};}
}
加上这些配置后还要检查一下项目有没有jackson-datatype-jsr310-2.13.5.jar这个依赖 这是jackson对java8时间模块的支持包 没有pom.xml就要加上:
<dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-jsr310</artifactId><version>2.13.5</version>
</dependency>
大功告成