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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • 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"
상단으로

티스토리툴바