Programming/Spring

[Spring] @ResponseBody 리턴시 Timestamp 깨짐 현상

성일만 2015. 1. 13. 16:18

@ResponseBody 리턴시 Timestamp 깨짐 현상



Spring MVC에서 리턴 타입 앞에 @ResponseBody를 명시할 경우 사용되는 Jackson 라이브러리는 Oracle의 DATE 타입의 데이터를 

수용하는 java.sql.Timestamp 타입을 정상적으로 변환하지 못하여 View에서 값이 비정상적으로 출력되는 현상.


해결 방법으로는 커스터마이징된 ObjectMapper상속 클래스를 구현하고 DispatcherServlet에 등록하면 View에서 값이 정상적으로 출력된다고 한다.


CustomObjectMapper.java

import java.text.SimpleDateFormat;

import org.codehaus.jackson.map.ObjectMapper;

import org.codehaus.jackson.map.SerializationConfig.Feature;


public class CustomObjectMapper extends ObjectMapper {

public CustomObjectMapper() {

super();

configure(Feature.WRITE_DATES_AS_TIMESTAMPS, false);

setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));

}

}



dispatcherServlet.xml

<mvc:annotation-driven>

<mvc:message-converters register-defaults="false">

<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">

<property name="objectMapper">

<bean class="....CustomObjectMapper"/>

</property>

</bean>

</mvc:message-converters>

</mvc:annotation-driven>