From 10047213bdd7258e78e97e1b19ffc68d106cdd26 Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Mon, 16 Oct 2023 18:17:50 +0800 Subject: [PATCH] Add global data format --- .../top/fatweb/api/config/DataFormatConfig.kt | 45 +++++++++++++++++++ src/main/resources/application.yml | 3 ++ 2 files changed, 48 insertions(+) create mode 100644 src/main/kotlin/top/fatweb/api/config/DataFormatConfig.kt diff --git a/src/main/kotlin/top/fatweb/api/config/DataFormatConfig.kt b/src/main/kotlin/top/fatweb/api/config/DataFormatConfig.kt new file mode 100644 index 0000000..eaa73a7 --- /dev/null +++ b/src/main/kotlin/top/fatweb/api/config/DataFormatConfig.kt @@ -0,0 +1,45 @@ +package top.fatweb.api.config + +import com.fasterxml.jackson.databind.SerializationFeature +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer +import org.springframework.beans.factory.annotation.Value +import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer +import org.springframework.boot.jackson.JsonComponent +import org.springframework.context.annotation.Bean +import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder +import java.text.DateFormat +import java.text.SimpleDateFormat +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter +import java.util.* + + +@JsonComponent +class DataFormatConfig { + @set:Value("\${spring.jackson.date-format}") + lateinit var dataFormat: String + + @set:Value("\${spring.jackson.time-zone}}") + lateinit var timeZone: TimeZone + + @Bean + fun jackson2ObjectMapperBuilder() = Jackson2ObjectMapperBuilderCustomizer { builder: Jackson2ObjectMapperBuilder -> + val tz = timeZone + val df: DateFormat = SimpleDateFormat(dataFormat) + df.timeZone = tz + builder.failOnEmptyBeans(false) + .failOnUnknownProperties(false) + .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) + .dateFormat(df) + } + + + @Bean + fun jackson2ObjectMapperBuilderCustomizer() = + Jackson2ObjectMapperBuilderCustomizer { builder: Jackson2ObjectMapperBuilder -> + builder.serializerByType( + LocalDateTime::class.java, LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dataFormat)) + ) + } + +} \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 6c1d655..897ad44 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -8,6 +8,9 @@ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver + jackson: + date-format: yyyy-MM-dd'T'HH:mm:ss.SSS'Z' + time-zone: GMT mybatis-plus: global-config: