2017-01-20 8 views
1

DRYの精神で、私は、中央クラスのすべてのRESTリソースに適用されるアノテーションと共有コードをバンドルしようとしています。パスの一部を共有することは機能していないようです。ジャージー:親クラスからパスを継承することが可能

たとえば、2つのRESTリソースが/v1/users/v1/itemsにあるとします。 Jerseyのリソースは、両方とも同じ親クラスV1BaseResourceを拡張します。彼らはパスのv1部分を継承できますか?

例:

@Path("v1") 
@Produces(MediaType.APPLICATION_JSON) // applies to all child-classes 
public class V1BaseResource { 

    // maybe even some shared code 
} 

UsersResource

@Path("users") 
public class UsersResource extends V1BaseResource { 

    @GET 
    public Response getUsers() ... 
} 

ItemsResource

@Path("items") 
public class ItemsResource extends V1BaseResource { 

    @GET 
    public Response getItems() ... 
} 

残念ながら、はパス、ないが上書きされ、実際のリソースの@Path注釈に追加されますそれはです。

これは可能ですか(sub-resource locatorsを使用しないで)?

答えて

1

あなたはJSRを見れば、それは不可能です。

サブクラスまたは実装方法は、その後、任意のJAX-RSのアノテーションを持っている場合は、スーパークラスやインターフェイスメソッド上のアノテーションのすべてが無視されます。

ここにJSR:JSR-339があります。 セクション3.6を参照してください。

+0

迅速な対応に感謝します!あなたはとても親切で、見積もりへのリンクを追加しますか?とても有難い。 – Hank

+1

私はJSRを更新しました;-) – Rouliboy

関連する問題