RestEasy 可以扩展@Path 吗?

Can RestEasy extends @Path?

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

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

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

有办法吗?简单的扩展并不能解决问题

注释可以继承,但它们不会被扩展或连接或类似的东西。这么说吧——B 上的 @Path 完全抹去了 A 上的 @Path。 (如果没有 B@Path,它会从 A 继承 @Path,可能会导致部署冲突,但这既不存在也不存在。)

我想到了两种方法来做到这一点。第一个,当然,简单地涉及这样做:

@Path("a/b")
public class B ...

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

@Path("a")
public class A {

    @Path("b")
    public B getB() {
       return new B();
    }
}

public class B {
    // blah blah blah
}

这里我想强调两件事:

  1. B 没有自己的 @Path。它是一个子资源,只能通过 A 才能直接访问。 B 的总路径是应用程序路径、A 的路径和子资源定位器 (getB()) 上的 Bs 路径的串联,具有适当的 /s .

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