JAX-RS默认为@Produces

ccl*_*eve 6 java web-services jetty jax-rs resteasy

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

我有很多产生Web服务的类.而不是把@Produces({"application/json", "application/xml"})它们放在每一个上面,我想在一个中心位置做.这样我可以在一个地方添加未来的生产者,而不必修改每个类.

我目前正在使用Resteasy with Jetty.

小智 5

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

@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface IJsonResource {
}
Run Code Online (Sandbox Code Playgroud)

@Produces(MediaType.APPLICATION_XML)
@Consumes(MediaType.APPLICATION_XML)
public interface IXmlResource {
}
Run Code Online (Sandbox Code Playgroud)

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

public class SomeJaxRsResource implements IJsonResource, IXmlResource {
...
}
Run Code Online (Sandbox Code Playgroud)


ccl*_*eve 0

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