kotlin에 redis를 적용하며 생각보다 많은 문제가 생겼다.
LocalDateTime을 다시 역직렬화 할 때 문제가 발생했다. 해당 문제는 mapper에 모듈을 추가해서 해결할 수 있었다.
val objectMapper = ObjectMapper()
.registerModule(JavaTimeModule())
.activateDefaultTyping(
BasicPolymorphicTypeValidator.builder()
.allowIfBaseType(Any::class.java).build(), ObjectMapper.DefaultTyping.EVERYTHING)
해당 오류는 기본 생성자를 유추해낼 수 없어서 발생하는 문제였다. Java의 경우 @NoArgsConstructor를 적용하면 해결할 수 있었으나 kotlin data class에서는 기본 생성자를 유추해낼 수 없어서 해당 문제가 발생했다. 해당 문제를 해결하려면 @JsonProperty("field_name")을 설정하거나, kotlinModule을 추가하면서 해결할 수 있다. 일일이 @JsonProperty("field_name")을 적용하기보단 모듈을 설정하는게 편하다 생각했고 다음과 같이 해결했다.
val objectMapper = ObjectMapper().registerKotlinModule()
.registerModule(JavaTimeModule())
.activateDefaultTyping(
BasicPolymorphicTypeValidator.builder()
.allowIfBaseType(Any::class.java).build(), ObjectMapper.DefaultTyping.EVERYTHING)