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 이용한 성능 개선