package com.tcm.training.admin.config; import com.fasterxml.jackson.databind.SerializationFeature; 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 com.tcm.training.admin.common.DateTimes; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class JacksonConfig { @Bean public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { return builder -> { JavaTimeModule javaTimeModule = new JavaTimeModule(); javaTimeModule.addSerializer( java.time.LocalDateTime.class, new LocalDateTimeSerializer(DateTimes.localDateTimeFormatter()) ); javaTimeModule.addDeserializer( java.time.LocalDateTime.class, new LocalDateTimeDeserializer(DateTimes.localDateTimeFormatter()) ); javaTimeModule.addSerializer( java.time.LocalDate.class, new LocalDateSerializer(DateTimes.localDateFormatter()) ); javaTimeModule.addDeserializer( java.time.LocalDate.class, new LocalDateDeserializer(DateTimes.localDateFormatter()) ); javaTimeModule.addSerializer( java.time.LocalTime.class, new LocalTimeSerializer(DateTimes.localTimeFormatter()) ); javaTimeModule.addDeserializer( java.time.LocalTime.class, new LocalTimeDeserializer(DateTimes.localTimeFormatter()) ); builder.modules(javaTimeModule); builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); }; } }