[Redis]org.springframework.data.redis.serializer.SerializationException: Could not write JSON

yeonjoo913·2023년 11월 21일
0

Redis

목록 보기
6/7

에러 메세지

org.springframework.data.redis.serializer.SerializationException: Could not write JSON: Java 8 date/time type java.time.LocalDateTime not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling

원인 및 해결

LocalDateTime 직렬화/역직렬화를 하지 못해서 생긴 ERROR이다.
jsr310 의존성을 추가해도 해결이 되지않았다.
redisconfig에 objectMapper()메소드를 추가하여 이를 해결하였다.

private ObjectMapper objectMapper() {
     PolymorphicTypeValidator ptv = BasicPolymorphicTypeValidator
             .builder()
             .allowIfSubType(Object.class)
             .build();
     ObjectMapper mapper = new ObjectMapper();
     mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
     mapper.registerModule(new JavaTimeModule());
     mapper.activateDefaultTyping(ptv, DefaultTyping.NON_FINAL);
     return mapper;
}

모듈은 ObjectMapper에게 LocalDateTime으로 작업하는 방법을 가르치고, 매개변수 WRITE_DATES_AS_TIMESTAMPS 는 JSON에서 LocalDateTime을 문자열로 표시하도록 한다.
springboot를 사용하기에 이를 Bean 형태로 주입하여 제공하였다.

Reference
Redis Cache 이용한 성능 개선

profile
주니어 백엔드 개발자. 까먹는다 기록하자!

0개의 댓글