我天真的理解(这可能是完全错误的)是,每当传入的请求流需要转换为 POJO 时,就需要一个自定义的 messageBodyReader 来传输Java POJO
作为 Response
通过网络传输,必须实现自定义 messageBodyWriter
。
卜据jersey documentation这里(第 7.2.1 节),它说
请注意,这只是如何编写自定义实体提供程序的演示。 Jersey 已经包含对实体提供程序的默认支持,可以将 JAXB bean 序列化为 XML。
我不明白这是什么意思?这是否意味着如果使用 Jersey Framework
就不需要实现 messageReaders
?
谁能详细说明一下吗?
谢谢
最佳答案
这意味着格式之间存在某种自动转换。由于 Jersey
实现了 JAX-RS
标准,您可以使用该标准提供的注释。
例如,如果您希望您的方法接受 XML 中的数据,您只需使用 @Consumes(MediaType.APPLICATION_XML)
对其进行注释,Jersey
将尝试自动将消息转换为 XML到 POJO
中。我还没有使用过 XML,但我将 JAX-RS
与 JSON
一起使用,它对于 @Consumes
和 工作得很好@产品
。
您可能需要使用 @XmlRootElement
之类的 XML 注释来注释您的 POJO 才能使其正常工作,但从概念上讲,主要转换工作是由框架完成的,无需自定义大多数情况下都需要实现。
关于java - 什么时候需要用JAX-RS编写自定义MessageBodyWriter和MessageBodyReader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25495105/