次のような JAX-RS 1 環境 (RestEasy 2 と Jackson プロバイダー) にデータ クラスがあるとします。
class Foo {
int id;
String name;
Bar bar;
...
}
でBarある:
class Bar {
int one;
String two;
}
今、私は特別な方法で連載したいと思っていますBar(おそらく、要求されたメディアの種類に応じて (または月の満ち欠けに応じて)、私はMessageBodyWriter<Bar>
@Provider
@Produces("application/json")
public class BarWriter implements MessageBodyWriter<Bar> {
...
}
Barのように単独で要求された場合、非常にうまく機能します
@GET @Path("bar")
public Bar getBar() { return new Bar(...); }
しかし、私Fooが
@GET @Path("foo")
public Foo getFoo() { return new Foo(...); }
メッセージ本文ライターは無視されます。
今私が欲しいのは、これMessageBodyWriterが私が戻ったときFoo、またはList<Bar>
MessageBodyWriter後者はケースのカスタムを書くだけで実現できると思いますが、List前者の場合、Barフィールドを含むすべてのアプリケーション クラスに対してメッセージ ボディ ライターを書くことはできません。
これを解決する方法についてのアイデアはありますか? インスタンスでJacksonシリアライザーも使用しようとしていましBarたが、これはRestEasyによって登録されていないようです(とにかく、その方法は壊れやすいと思います)。