次のような 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によって登録されていないようです(とにかく、その方法は壊れやすいと思います)。