@Path("a")
public class A {}
@Path("b")
public class B extends A {
@GET
getList(){}
}
我想要一条路径为GET localhost / rest / v1 / a / b
这是一种方法吗?简单的扩展并没有解决问题
答案 0 :(得分:1)
注释可以继承,但它们不会被扩展或连接或类似的东西。这样说吧@Path
B
完全删除了来自@Path
的{{1}}。 (如果没有A
的{{1}},它会从B
继承@Path
,可能会导致部署冲突,但这既不存在也不存在。“
我有两种方法可以做到这一点。第一,当然,只是涉及这样做:
@Path
第二个涉及子资源(the JAX-RS 2.0 spec的第3.4.1节)......
A
我想强调两件事:
@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
getB()
不会从/
继承。如果是这样,如上所述,它会继承B
的@Path。这可能会产生冲突,或导致A
被忽略,以支持更具体的子类型A
。 (有关注释继承的详细信息,请参阅规范的第3.6节;有关如何为给定请求选择匹配的类/方法,请参阅第3.7节。)