java - 什么时候需要用JAX-RS编写自定义MessageBodyWriter和MessageBodyReader?

标签 java jaxb jersey jax-rs

我天真的理解(这可能是完全错误的)是,每当传入的请求流需要转换为 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-RSJSON 一起使用,它对于 @Consumes 工作得很好@产品
您可能需要使用 @XmlRootElement 之类的 XML 注释来注释您的 POJO 才能使其正常工作,但从概念上讲,主要转换工作是由框架完成的,无需自定义大多数情况下都需要实现。

关于java - 什么时候需要用JAX-RS编写自定义MessageBodyWriter和MessageBodyReader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25495105/

相关文章:

java - Jersey 及附加数据进行json回复,无需修改实体类

java - 使用 Jackson 将巨大的 JSON 响应反序列化为 POJO 的最有效方法是什么?

java - 有没有一种方法可以防止请求使用过滤器到达 grails 中的操作

java - JAXB - 非法注释异常

jaxb - 使用哪个 JAXB 实现?

java - Jersey 2.7 和 Dropwizard 0.7 - 支持吗?

java - Android 静默发帖到 Facebook

java.lang.ClassCastException : In Web-DriverWait when using PageFactory with POM

java - 如何自动添加 XML 注释

java - 将服务类与泛型绑定(bind)