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