【问题标题】:JAX-RS default @ProducesJAX-RS 默认 @Produces
【发布时间】:2014-11-24 22:00:12
【问题描述】:

是否有一种应用程序范围的方式在所有 JAX-RS /资源上默认 @Produces 注释?

我有很多生成 Web 服务的类。我不想将@Produces({"application/json", "application/xml"}) 放在每个人身上,而是想在一个中心位置进行。这样我就可以在一个地方添加未来的生产者,而不必修改每个类。

我目前正在使用带有 Jetty 的 Resteasy。

【问题讨论】:

  • 不,很遗憾没有。可能有一种方法可以让单个 MessageBodyWriter 产生正确的媒体类型。另一种方法是将根 JAX-RS 类映射到生成首选类型的 Path("/")

标签: java web-services jetty jax-rs resteasy


【解决方案1】:

我知道这是一个有点老的问题,但它可能对像我这样的其他人有所帮助。作为 ccleve 解决方案的补充,您也可以使用接口。由于多重继承,您可以通过接口组合多种媒体类型。示例:

@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface IJsonResource {
}

@Produces(MediaType.APPLICATION_XML)
@Consumes(MediaType.APPLICATION_XML)
public interface IXmlResource {
}

然后在您的具体 JAX-RS 资源类中:

public class SomeJaxRsResource implements IJsonResource, IXmlResource {
...
}

【讨论】:

    【解决方案2】:

    我找到了答案。创建一个父 /resource 类,为其添加 @Produces 注解,然后将其子类化为实际资源。工作正常。

    【讨论】:

      猜你喜欢
      • 2015-01-25
      • 1970-01-01
      • 2013-06-26
      • 1970-01-01
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 2015-01-22
      相关资源
      最近更新 更多