RestEasy可以扩展@Path吗?

时间:2016-03-04 14:21:44

标签: java rest path resteasy

@Path("a")
public class A {}

@Path("b")
public class B extends A {
    @GET
    getList(){}
}

我想要一条路径为GET localhost / rest / v1 / a / b

这是一种方法吗?简单的扩展并没有解决问题

1 个答案:

答案 0 :(得分:1)

注释可以继承,但它们不会被扩展或连接或类似的东西。这样说吧@Path B完全删除了来自@Path的{​​{1}}。 (如果没有A的{​​{1}},它会从B继承@Path,可能会导致部署冲突,但这既不存在也不存在。“

我有两种方法可以做到这一点。第一,当然,只是涉及这样做:

@Path

第二个涉及子资源(the JAX-RS 2.0 spec的第3.4.1节)......

A

我想强调两件事:

  1. @Path("a/b") public class B ... 没有自己的@Path("a") public class A { @Path("b") public B getB() { return new B(); } } public class B { // blah blah blah } 。它是一个子资源,除了B之外无法直接访问。 B的总路径是子资源定位器(@Path)上应用程序路径A的路径和A路径的串联,具有适当的B s

  2. getB()不会从/继承。如果是这样,如上所述,它会继承B的@Path。这可能会产生冲突,或导致A被忽略,以支持更具体的子类型A。 (有关注释继承的详细信息,请参阅规范的第3.6节;有关如何为给定请求选择匹配的类/方法,请参阅第3.7节。)