com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type java.time.LocalDateTime not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310"

2024. 8. 25. 11:03·Backend/Redis

 

리펙토링 중인 프로젝트의 엔티티에는 챌린지 startedDate, completedDate 컬럼이 존재하는데, 해당 컬럼의 타입은 LocalDateTime이었다. 해당 데이터를 직렬화하고 Redis에 저장한 후, 캐시 데이터를 조회할 때 역직렬화 과정을 거쳐야하는데 Jackson 라이브러리에서 LocalDate, LocalTime, LocalDateTime을 지원하지 않았다.

 

이를 처리하도록 사용하려면 com.fastxml.jackson.datatype:jsr310 모듈을 추가해야한다는 경고가 나타났고, 아래와 같이 추가해주었다. 그러나, 문제는 해결되지 않았다. Jackson을 공부하면서 ObjectMapper에 대한 이해가 필요함을 느꼈다. 

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

 

 

 

 

ObjectMapper

Java에서 JSON을 다루는 데 사용되는 Jackson 라이브러리의 주요 클래스로 JSON과 Java 객체 간의 변환을 담당한다. 컬렉션 타입, 날짜/시간 타입과 같은 복잡한 데이터 유형을 적절하게 처리하기 위해서는 사용자 정의 모듈을 추가해주어야 한다. 나는 LocalDateTime을 사용하기 위해 JavaTimeModule이 필요했다. ObjectMapper에 JavaTimeModule을 등록하고 스프링 빈으로 등록주었고, 이제 날짜/시간 타입에 대해서도 직렬화 및 역직렬화가 정상적으로 동작하게 되었다.

@Configuration
public class ModuleConfig {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.registerModule(new JavaTimeModule());
        return objectMapper;
    }
}

 

 

 

 


참고 자료

  • https://stackoverflow.com/questions/27952472/serialize-deserialize-java-8-java-time-with-jackson-json-mapper
  • https://woo-chang.tistory.com/75
'Backend/Redis' 카테고리의 다른 글
  • Could not read JSON:Cannot construct instance of org.springframework.data.domain.PageImpl (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
  • Docker Redis 컨테이너 실행 시 redis.conf 파일 생성 오류
kimdozzi
kimdozzi
끝까지 포기하지 않으면, 내가 다 이겨!
  • kimdozzi
    도브로
    kimdozzi
  • 전체
    오늘
    어제
    • 분류 전체보기 (132)
      • Problem Solving (49)
        • Baekjoon (29)
        • Programmers (0)
        • LeetCode (17)
        • 삼성 유형 (2)
      • Computer Science (27)
        • Operating System (2)
        • Algorithms (13)
        • Network (6)
        • DataBase (6)
      • Backend (33)
        • JavaScript (0)
        • TypeScript (6)
        • Java (7)
        • Spring Boot (7)
        • Spring Security (6)
        • JPA (2)
        • Mybatis (1)
        • Junit5 (1)
        • Redis (3)
      • DevOps (14)
        • Git, Github (5)
        • docker (4)
        • AWS (3)
        • nginx (2)
      • etc (6)
        • IntelliJ (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 티스토리
    • 설정
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    타입스크립트
    docker image
    CORS
    인터페이스
    AWS
    python
    누적합
    imos법
    인덱서블 타입
    인덱스 시그니처
    파이썬
    알고리즘
    Bucket
    오블완
    segment tree
    컨테이너
    PrefixSum
    삼성기출
    세그먼트 트리
    티스토리챌린지
    interface
    docker
    S3
    오프라인 쿼리
    구간합
    구간 업데이트
    도커
    점 업데이트
    온라인 쿼리
    TypeScript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
kimdozzi
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type java.time.LocalDateTime not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310"
상단으로

티스토리툴바