当自定义MessageBodyWriter和MessageBodyReader需要用JAX-RS编写时?

时间:2014-08-25 22:07:56

标签: java jaxb jersey jax-rs

我天真的理解(可能完全错误)是,无论何时需要将传入请求流转换为POJO,都需要自定义messageBodyReader并传输Java POJO网络为Response,必须实施自定义messageBodyWriter

根据这里的jersey documentation(第7.2.1节),它说

Please note, that this is only a demonstration of how to write a custom entity provider. Jersey already contains default support for entity providers that can serialize JAXB beans into XML.

我不明白这是什么意思?这是否意味着如果使用messageReaders

,则无需实施Jersey Framework

有人可以详细说明吗?

由于

2 个答案:

答案 0 :(得分:1)

这意味着格式之间存在某种自动转换。当Jersey实现JAX-RS - 标准时,您可以使用标准提供的注释 因此,例如,如果您希望您的方法接受XML格式的数据,您只需使用@Consumes(MediaType.APPLICATION_XML)对其进行注释,Jersey将尝试自动将消息XML转换为POJO。我还没有使用过XML,但是我使用了JAX-RS JSON,它适用于@Consumes@Produces。 您可能需要使用POJO之类的XML注释来注释@XmlRootElement以使其正常工作,但从概念上讲,主要的转换工作是由框架完成的,不需要自定义实现在大多数情况下。

答案 1 :(得分:0)

本文档的特定部分提供了编写将实体转换为xml文档的MessageBodyReader的示例。您引用的摘录说明您不需要编写MessageBodyReader来处理xml,因为Jersey默认提供一个。它们提供了示例,因此您可以编写MessageBodyReader来处理实体流到自定义pojo(MyWonky.class)的转换。