Clean Code that Works.

스프링에서 MappingJacksonHttpMessageConverter를 사용할 때
Date 포맷은 json값이 "createdAt":1287041156338 이렇게 들어 온다.

이게 멍미!!
하여 포맷을 정해줘야 하는데...

아주 유용한 블로그를 발견 했다.
how-to-serialize-java-util-date-with-jackson-json-processor-spring-3-0
오우 very good!!

하는 방법은
jackson 요녀석이 시리얼 라이즈를 하는데..
Date형식에 대해서는 특정 시리얼라이저(
JsonDateSerializer)를 정해줘서.
이 녀석을 getDate 하는데다가
@JsonSerialize(using=JsonDateSerializer.class) 이렇게 해주는거다.
JsonSerializer<Date>이것을 상속하여 JsonDateSerializer를 구현해서 사용.

그러면 jackson 이것이 시리얼라이즈를 할 때 저것을 사용하려 시리얼 라이즈를 하게 된다.

쭉 살펴보면..
댓글에도 유용한 답변이 있다.
바로 전역적인 dateformat을 사용할 때는 어떻게 하는가.

이때는
MappingJacksonHttpMessageConverter의 ObjectMapper를 구현하여 set 해주면 된다.
org.codehaus.jackson.map.ObjectMapper를 상속하여 CustomObjectMapper 를 만들고,
CustomObjectMapper클래스 안의 메서드에 @PostConstruct 를 붙여 주고
getSerializationConfig().setDateFormat(new SimpleDateFormat(“yyyy-MM-dd’T'HH:mm:ss.SZ”));
이 스타일로 포맷을 지정해 주면 된다.

그다음엔 스프링 설정에서 빈으로 만들고 MappingJacksonHttpMessageConverter에다가 주입!!

<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper" ref="CustomObjectMapper" />
</bean>