발생
ObjectMapper 을 이용한 객체 직렬화 도중에 문제가 발생했다.
원인
에러 메시지에 나와있다.
요약하면 자바 8 LocalDateTime 을 제공하지 않으니 ' jackson-datatype-jsr310' 모듈을 추가하라는 말이다.
해결
먼저 jackson 버전을 확인해야 한다. jackson 2.8.0 이전 버전에는 jackson-datatype-jsr310 모듈을 추가할수 없다.다행히 내 jackson 버전은 2.15.3 버전이다.
그런데 이상한 점을 발견했다. 이미 jackson-datatype-jsr310 모듈이 추가되어 있는 것이다.
ObjectMapper 란?
직렬화와 역직렬화를 제공하는 Jackson 라이브러리 클래스다. 다만 복잡한 데이터 유형은 사용자가 직접 어떤 식으로 직렬화를 할지 정해주는 사용자 정의 모듈을 설정해줘야 한다.
LocalDateTime 의 경우 javaTimeModule 이 이미 제공한다.
JavaTimeModule
ObjectMapper 은 기본적으로 표준 java 라이브러리가 아닌 추가된 라이브러리르 인식하지 못한다. 따라서 이를 모듈로 설정해줘야 하는데, 이를 위해서 기본적으로 제공하는 모듈이다.
@Configuration
public class Config {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
return objectMapper;
}
}
이와 같이 빈으로 등록할때 모듈을 지정해주면 된다.
빈으로 등록하지 않는다면 그냥 objectMapper.resterModule(new JavaTimeModule()) 코드를 작성해주면 된다.
'에러 기록' 카테고리의 다른 글
ASP.NET 에러 - 초기화 문자열의 형식이 인덱스 0에서 시작하는 규격과 맞지 않습니다. (0) | 2024.12.03 |
---|---|
ASP.NET 에러 - W3WP.EXE 자동 실행 (0) | 2024.12.03 |
스프링 JPA 과 pk값이 여러 컬럼인(복합키) 테이블 연결하기 - jpa (0) | 2024.02.28 |
Spring validation 과정 중, properties에서 지정한 message 가 출력되지 않음. - 타임리프, 스프링 오류 (0) | 2024.02.19 |
~~~ because "this.redisTemplate" is null - 스프링 REDIS 테스트 오류 (0) | 2024.02.04 |