kotlin redis cache 적용하며 만난 문제

정명진·2023년 9월 6일
0
post-custom-banner

kotlin에 redis를 적용하며 생각보다 많은 문제가 생겼다.

LocalDateTime 역직렬화 오류

LocalDateTime을 다시 역직렬화 할 때 문제가 발생했다. 해당 문제는 mapper에 모듈을 추가해서 해결할 수 있었다.

val objectMapper = ObjectMapper()
            .registerModule(JavaTimeModule())
            .activateDefaultTyping(
                BasicPolymorphicTypeValidator.builder()
                .allowIfBaseType(Any::class.java).build(), ObjectMapper.DefaultTyping.EVERYTHING)

No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator

해당 오류는 기본 생성자를 유추해낼 수 없어서 발생하는 문제였다. 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)
profile
개발자로 입사했지만 정체성을 잃어가는중... 다시 준비 시작이다..
post-custom-banner

0개의 댓글