전공공부
ObjectMapper를 이용한 LocalDateTime Deserialize 에러 잡기 본문
관리자 페이지 운영 중 Jackson Mapper 관련한 라이브러리 이전 버전일 경우 JDK8의 LocalDateTime을 제대로 파싱해서 가져오지 못하는 오류가 생겼다.
이는, 단순히 JacksonMapper 버전을 상승시켜서 해결 할 수 있다.
하지만, 리스크가 크고 이에 따라서 아래의 방법을 적용했다.
JDK 8 이상 부터 LocalDateTime의 직렬화 바이트 스트림을 제대로 파싱하기 위한 의존성 주입
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
@Bean 객체로 등록한 ObjectMapper에 아래와 같이 자바 타임 모듈에 역직렬화시 쓰일 데이터 포메터 지정하여서 역직렬화시 DTO 파싱 오류를 잡음
@Bean
ObjectMapper mapper() {
JavaTimeModule module = new JavaTimeModule();
LocalDateTimeDeserializer localDateTimeDeserializer = new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
module.addDeserializer(LocalDateTime.class, localDateTimeDeserializer);
return Jackson2ObjectMapperBuilder.json()
.modules(module)
.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.build();
}
'Study > Java' 카테고리의 다른 글
[아이템 88] readObject는 방어적으로 작성하라. (0) | 2023.07.31 |
---|---|
[아이템 84] 프로그램의 동작을 스레드 스케줄러에 기대지 말라 (0) | 2023.07.23 |
[아이템 79.] 과도한 동기화는 피하라 (0) | 2023.07.10 |
[아이템 74.] 메서드가 던지는 모든 예외를 문서화하라 (0) | 2023.07.04 |
[아이템 70] 복구할 수 있는 상황에서는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라 (0) | 2023.06.25 |