티스토리 뷰

 이번에 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이 설정해 준대로 보이는 걸 확인할 수 있습니다.

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday