Add global data format

This commit is contained in:
2023-10-16 18:17:50 +08:00
parent 8e3ceb16c1
commit 10047213bd
2 changed files with 48 additions and 0 deletions

View File

@@ -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))
)
}
}

View File

@@ -8,6 +8,9 @@ spring:
datasource: datasource:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver 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: mybatis-plus:
global-config: global-config: