IT/Framework
Spring Webflux - LocalDatetime, LocalDate format 셋팅
Normal_One
2025. 3. 8. 16:40
이번에 R2dbc를 사용하면서 컬럼에 LocalDatetime 및 LocalDate를 적극적으로 사용하고 있는데, Swagger를 보니 표기가 yyyy-MM-ddTHH:mm:ss.SSS로 나왔습니다. 그냥 흐린 눈하고 저렇게 받으면 되긴 한데, 한국인의 정서라는 게 있지 않겠습니까? yyyy-MM-dd HH:mm:ss로 나오면 좋겠는데.. 해서 한참 찾아보니 @DateTimeFormat을 쓰라는데, 이걸 장인 정신으로 한땀 한땀 다 붙이는 미친 짓은 하고 싶지 않아서 더 알아보니 WebFluxConfigurationSupport를 상속받은 후에 FormattingConversionService를 Override해서 쓰라는데 잘 되는 거 같았는데, 이젠 설정이 엉망진창이 되어서 Swagger도 접속 안되는 문제가 발생했습니다..ㅎ 인생 쓰다. 그래서 다시 심기 일전하여 천천히 해보니 아래와 같이 두 파일만 설정해주면 되었습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.format.DateTimeFormatter;
@Configuration
public class JacksonConfig {
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return builder -> {
// formatter
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// deserializers
builder.deserializers(new LocalDateDeserializer(dateFormatter));
builder.deserializers(new LocalDateTimeDeserializer(dateTimeFormatter));
// serializers
builder.serializers(new LocalDateSerializer(dateFormatter));
builder.serializers(new LocalDateTimeSerializer(dateTimeFormatter));
};
}
}
|
cs |
이렇게 JacksonConfig 파일 생성 후 builder를 통해 LocalDate와 LocalDatetime에 대한 Format 정보를 입력합니다. 그리고 application.yaml에 들어가서
1
2
3
4
5
6
|
spring:
webflux:
format:
date-time: yyyy-MM-dd HH:mm:ss
date: yyyy-MM-dd
time: HH:mm:ss
|
cs |
아래와 같이 설정 추가해주면 끝~! 이렇게 하면 모든 곳에서 LocalDatetime과 LocalDate에 대한 Format이 설정해 준대로 보이는 걸 확인할 수 있습니다.