jaxbアノテーションのサポートをjacksonに追加する最も簡単な方法を探しています。 ジャクソンは今や春に<mvc:annotation-driven/>
で追加されました。私は@ResponseBody
アノテーションでそれを必要とするオブジェクトは、メディアタイプに依存してxmlまたはjsonに変換されます。 私はspring-mvcで新しく、物事の仕組みはまだ分かりません。ありがとう。jackson jaxb annotationsがSpringでサポート
0
A
答えて
2
さて、XMLとJSONの両方を返すことができると思われます。これを行うには、両方の形式に対してMessageConverter
を作成する必要があります。
XMLメッセージコンバータ:
<bean id="xmlConverter"
class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<constructor-arg>
<oxm:jaxb2-marshaller id="jaxb2Marshaller">
<!-- you must either bind your JAXB annotated classes here -->
<!-- OR provide a jaxb.index and use contextPath -->
<oxm:class-to-be-bound name="com.mycompany.MyClass"/>
</oxm:jaxb2-marshaller>
</constructor-arg>
<property name="supportedMediaTypes">
<list>
<bean class="org.springframework.http.MediaType">
<constructor-arg index="0" value="application"/>
<constructor-arg index="1" value="xml"/>
<constructor-arg index="2" value="UTF-8"/>
</bean>
</list>
</property>
</bean>
JAXB注釈を使用してJSONのメッセージコンバータ、:
<bean id="jaxbAnnotationInspector"
class="org.codehaus.jackson.xc.JaxbAnnotationIntrospector"/>
<bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper">
<property name="annotationIntrospector" ref="jaxbAnnotationInspector"/>
</bean>
<bean id="jsonConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper">
<bean ref="jacksonObjectMapper"/>
</property>
<property name="supportedMediaTypes">
<list>
<bean class="org.springframework.http.MediaType">
<constructor-arg index="0" value="application"/>
<constructor-arg index="1" value="json"/>
<constructor-arg index="2" value="UTF-8"/>
</bean>
</list>
</property>
</bean>
し、適切なコンテンツタイプへの応答を変換します最終的には、AnnotationMethodHandlerAdapter
、受諾ヘッダに応じて:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="xmlConverter"/>
<ref bean="jsonConverter"/>
</list>
</property>
</bean>
jacksonのJAXBサポートは100%完全ではなく、常に正しいとはいえませんが、開発者はバグを修正してエラーレポートに応答することができます。
関連する問題
- 1. JAXB Annotations
- 2. Xmlシリアル化JAXBとJackson-dataformat-xml?
- 3. Spring Jackson Mapper
- 4. JAXBアノテーションを使用したJackson JSONライブラリの使用
- 5. JAXB in Spring MVC
- 6. JAXBヘッダーセキュリティー(Spring-WS
- 7. Spring MVC 4 + Jackson + LocalDate
- 8. Spring xmlコンフィグレーションコントローラをAnnotationsに更新する
- 9. Spring Boot/Thymeleaf/Hibernate:Sessionfactory Bean with Java Annotations
- 10. Spring&MongoCursor&Jackson JsonNode(データベース変換)
- 11. spring 4 mvc + Hibernate + Annotations設定ヒープメモリの問題
- 12. JAXBでのXSDバージョン管理のサポート
- 13. Dynamic JsonProperty(SpringブートでJacksonを使用)
- 14. Spring + Jacksonコンテンツタイプ 'application/json; charset = UTF-8'はサポートされていません
- 15. JaxB、パッケージ-Info.javaでのSpringブート、ClassNotDefエラー
- 16. AWS Lambda:ホストバージョンで応答を作成するときにJackson Annotationsが無視される
- 17. Jackson YAML:アンカーと参照のサポート
- 18. AbstractMethodEndpointMappingのAbstractMethodEndpointMappingのSpringメソッドをSpring-WSとJAXBで実装する
- 19. RequestMappingHandler(Jackson&Spring-MVC)の初期化エラー
- 20. Spring MongoTemplatesを使用したJacksonカスタムデシリアライザ/シリアライザ
- 21. Spring MVC/Jackson:完了後のオブジェクトマッパーのリセット
- 22. Spring/Jacksonを使用したKotlinデータクラス
- 23. Jackson enumの逆シリアル化。 Spring restTemplate
- 24. Springデータ用のJacksonモジュールの登録REST
- 25. リソースとリソース・アセンブラを持つSpring HATEOAS/Jackson
- 26. JSONObject SpringとJacksonの代わりに
- 27. JPA with Spring MVC Annotationsによって設定されました
- 28. JAXBアノテーション付きSpring 3.1.2の登録者マッピングJackson2HttpMessageConverter
- 29. Spring AOPロギングインターセプタとJAXBの問題
- 30. Hibernate annotations double []
ありがとうございます。それは動作します(しかし、冗長です:)。今、私はすべてのJAXBアノテーション付きクラスのリストを手動で(XMLコンバータのために)提供したくありません。私に何ができる?どのように に実装されていますか? –
adsurbum
上記のスニペットで指摘したように、すべてのクラスをリストするか、 'jaxb.index'を提供することができます。 [javadocs](http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/JAXBContext.html#newInstance%28java.lang.String%29)は、代わりに'ObjectFactory'クラスです。さらに古くて冗長なように思えるので、すべてのクラスを明示的にspringコンテキストXMLにリストするだけです。 – beerbajay
ああ、XMLの冗長さが気に入らない場合は、独自のJavaクラスを作成してすべてのコンポーネントを配置し、そのクラスを注入することができます。私はXMLの変種が好きです。 – beerbajay