본문 바로가기

카테고리 없음

Java 8 LocalTime 직렬화 오류

1. 문제 정의

Redis를 이용해서 DB 캐시를 구현하려는 도중, LocalTime 타입의 경우 Serialization Error가 계속 발생했습니다.
이전에 직렬화 에러는 implements Serializable을 사용할 경우 해결한 경험이 있어 시도했지만, 에러는 해결되지 않았습니다.

2. Jackson 직렬화 의존성 추가

    implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'

이 의존성을 추가하면 해결할 수 있는 문제였습니다.

Java 8 LocalTime 타입의 경우, 라이브러리를 통해 직렬화 에러를 해결할 수 있습니다.
의존성을 추가한 후, LocalTime 타입에서 직렬화와 역직렬화 정의를 해주어야 합니다.

    @JsonSerialize(using = LocalTimeSerializer.class)
    @JsonDeserialize(using = LocalTimeDeserializer.class)
    private LocalTime openAt;
    @JsonSerialize(using = LocalTimeSerializer.class)
    @JsonDeserialize(using = LocalTimeDeserializer.class)
    private LocalTime closeAt;

이처럼 LocalTime을 JsonSerialize 어노테이션을 붙여준다면 위의 에러를 해결할 수 있습니다.

3. 마무리

이번 포스팅을 통해 Java 8 LocalTime 직렬화 방법에 대해서 알아보았습니다.
Java 8의 LocalDateTime, LocalDate 또한 동일한 방법으로 문제를 해결할 수 있습니다.