발생
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()) 코드를 작성해주면 된다.