SpringMVC3.2RC1でRESTAPIに取り組んでいます。
org.joda.time.DateTimeタイムスタンプを含むJPAエンティティをフェッチし、Springにそれを使用してJSONにシリアル化させます
@RequestMapping(value = "/foobar", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
追加しただけなので、SpringのデフォルトのJackson2設定を使用します
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.1.1</version>
</dependency>
私のPOMに接続し、Springにそれ自体を配線させます。
コントローラは以下を生成しています:
"created":{"year":2012,"dayOfMonth":30,"dayOfWeek":5,"era":1,"dayOfYear":335,"weekOfWeekyear":48,"weekyear":2012,"monthOfYear":11,"yearOfEra":2012,"yearOfCentury":12,"centuryOfEra":20,"millisOfSecond":39,"millisOfDay":52684039,"secondOfMinute":4,"secondOfDay":52684,"minuteOfHour":38,"minuteOfDay":878,"hourOfDay":14,"millis":1354282684039,"zone":{"uncachedZone":{"cachable":true,"fixed":false,"id":"Europe/Stockholm"},"fixed":false,"id":"Europe/Stockholm"},"chronology":{"zone":{"uncachedZone":{"cachable":true,"fixed":false,"id":"Europe/Stockholm"},"fixed":false,"id":"Europe/Stockholm"}},"afterNow":false,"beforeNow":true,"equalNow":false}
しかし、私はそれを2007-11-16T20:14:06.3Z(またはオフセット付き)のようなISO8601の日付にしたいと思います。
私の推測では、ObjectMapperにアクセスし、mapper.enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);を設定する必要があります。しかし、使用時にObjectMapperにアクセスするにはどうすればよいですか?
<mvc:annotation-driven />
PS JodaTimeサポートを取得するためにUserTypeを使用して、JPA/Hibernate4を使用してオブジェクトをPostgreSQLに永続化しています。DS
アップデート
以下の設定はjava.util.Dateで解決しますが、JodaTimeではサイコロはありません。
<annotation-driven>
<message-converters>
<beans:bean
class="org.springframework.http.converter.StringHttpMessageConverter" />
<beans:bean
class="org.springframework.http.converter.ResourceHttpMessageConverter" />
<beans:bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<beans:property name="objectMapper">
<beans:bean
class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"
p:indentOutput="true" p:simpleDateFormat="yyyy-MM-dd'T'HH:mm:ss.SSSZ">
</beans:bean>
</beans:property>
</beans:bean>
</message-converters>
</annotation-driven>