EEYatHo 앱 깎는 이야기

Server ) Cannot construct instance of java.time.LocalDateTime 오류 해결 본문

Server

Server ) Cannot construct instance of java.time.LocalDateTime 오류 해결

EEYatHo 2021. 2. 17. 23:27
반응형

[ 상황 설명 ]

JPA / SpringBoot로 REST API 코딩할 때 생긴 일이다.

디비 시스템에서 AWS의 Redis를 캐시로 사용하고 있었는데,

@Cacheable 어노테이션을 적용한  ( = Redis로 캐시를 하는 ) API에서 저런 오류가 나오는 것이다.

 

( 오류 메세지 )

 Could not read JSON: Cannot construct instance of `java.time.LocalDateTime` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)\n at.... (생략)


[ 문제 해결 ]

열심히 찾아본 결과,

LocalDateTime, LocalDate 타입 변수들은 Redis에서 역직렬화로 꺼내올 때 문제가 발생한다.

원인은 LocalDateTime, LocalDate타입을 자바 8부터 지원해서 어쩌구 저쩌구..? 정확히는 아직 모르겠다.

때문에 이 친구들을 JSON직렬화, 역직렬화 해주는 어노테이션을 붙혀줘야한다.

 

LocalDateTime은 

@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)

LocalDate는

@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)

이렇게.

 

Comments