注釈付きコントローラーとコンテンツ ネゴシエーション (@ResponceBody) を使用して REST サービスを作成しています。異なるユース ケースに対応する {{Foo}} のインスタンスを返す 2 つの異なるコントローラー メソッドがあり、{{Foo}} の JSON 表現をこれらのメソッドで異なるものにしたいと考えています。
例えば:
@ResponseBody
public Foo method1() {... return new Foo(123); } // should produce '123'
@ResponseBody
public Foo method2() {... return new Foo(123); } // should produce '{name:"Foo", number:123}'
もちろん、DTO パターンを使用して、さまざまなメソッドでさまざまな DTO を返し (たとえば、それぞれ {{FooDTO1}} と {{FooDTO2}})、それらの DTO にさまざまな JSON シリアライザーを登録するだけです。しかし、適切な JSON シリアライザーを適用するためだけに、2 つの追加の DTO クラスを定義し、それらのクラスの使い捨てインスタンスを作成するのは間違っていると感じるので、より良い方法があるのではないかと思います。どのシリアライザーをどのケースに使用する必要があるか、SpringまたはJacksonに何らかのヒントを与えることはできませんか?