0
@Path("a")
public class A {}
@Path("b")
public class B extends A {
@GET
getList(){}
}
我想要一个路径是GET本地主机/ REST/V1/A/BRestEasy可以扩展@Path吗?
它是一个办法做到这一点?简单的扩展并不能解决问题
@Path("a")
public class A {}
@Path("b")
public class B extends A {
@GET
getList(){}
}
我想要一个路径是GET本地主机/ REST/V1/A/BRestEasy可以扩展@Path吗?
它是一个办法做到这一点?简单的扩展并不能解决问题
注解可以是继承,但它们不是扩展或连接或类似的东西。用这种方式 - @Path
在B
上完全擦除@Path
从A
。 (无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
}
两件事情我想强调:
B
没有自己的@Path
。它是一个子资源,除了通过A
之外不能直接访问。到B的总路径是子资源定位器(getB()
)上应用程序路径A
的路径和B
的路径以及适当的/
s的串联。
B
不从A
继承。如果是这样,就像我上面所说的那样,它会继承A
的@Path。这可能会产生冲突,或导致A
被忽略,以支持更具体的子类型B
。 (有关注解继承的详细信息,请参阅规范的第3.6节,关于给定请求的确切匹配类/方法的选择,请参见第3.7节。)
谢谢。我用第一种方式 - @Path(“a/b”) – kret