我正在使用带注释的控制器和内容协商 (@ResponceBody) 创建一个 REST 服务。我有两个不同的控制器方法返回 {{Foo}} 的实例,它们服务于不同的用例,我希望 {{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 序列化程序。但我想知道是否有更好的方法,就我而言,定义两个额外的 DTO 类并创建这些类的一次性实例只是为了应用正确的 JSON 序列化程序,这感觉不对。我不能以某种方式暗示 Spring 或 Jackson 在哪种情况下应该使用哪个 Serializer 吗?