API를 개발할때 Jackson 을 사용하고 있는데 시간이 이상하게 리턴이 되는 문제점을 발견했어요.
Jackson은 기본적으로 UTC를 사용하기 때문에 원하는 시간대를 사용하기 위해서는 아래 소스와 같이 설정이 필요하네요.
아시겠지만 일단 소스를 보시면 바로 아실꺼에요.
@Configuration
class JacksonDateFormatConfiguration {
@Bean
fun jackson2ObjectMapperBuilderCustomizer(): Jackson2ObjectMapperBuilderCustomizer {
return Jackson2ObjectMapperBuilderCustomizer { jacksonObjectMapperBuilder: Jackson2ObjectMapperBuilder ->
jacksonObjectMapperBuilder.timeZone(TimeZone.getTimeZone("Asia/Seoul"))
jacksonObjectMapperBuilder.simpleDateFormat(datetimeFormat)
jacksonObjectMapperBuilder.serializers(
LocalDateSerializer(
DateTimeFormatter.ofPattern(
dateFormat
)
)
)
jacksonObjectMapperBuilder.serializers(
LocalDateTimeSerializer(
DateTimeFormatter.ofPattern(
datetimeFormat
)
)
)
}
}
companion object {
private const val dateFormat = "yyyy-MM-dd"
private const val datetimeFormat = "yyyy-MM-dd HH:mm:ss"
}
}
위와 같이 jacksonObjectMapper에 시간대를 설정하시면 저처럼 오류가 나오는 버그는 쉽게 해결이 가능합니다.
[Kotlin] try-catch 대신 사용할 수 있는 runCatching (0) | 2023.11.24 |
---|---|
[Kotlin]Lift return out of if 란 무엇인가? (0) | 2023.11.21 |
[Kotlin] firstOrNull 에 대한 정리 (1) | 2023.10.26 |
[Kotlin] mutableListOf 함수에 대한 예제 (0) | 2023.10.25 |
[Kotlin] 엘비스 연산자 (Elvis Operation) (0) | 2023.08.31 |