与@ResponseBody Annotation相比,使用MappingJackson2JsonView支持在Spring REST中返回JSON响应有什么优势?


问题内容

我正在阅读本教程,发现我们可以在Spring
REST中使用MappingJackson2JsonView@ResponseBody注释的支持来返回JSON响应。

显然,“使用@ResponseBody注释”非常简单并且易于实现,而“使用MappingJackson2JsonView支持”则有点复杂。无论如何,这是我个人的看法,但是我想知道
在Spring REST中使用MappingJackson2JsonView支持而不是@ResponseBody
Annotation来返回JSON响应
优点 是什么?有人可以解释一下哪个更好,为什么呢?
何时使用MappingJackson2JsonView支持以及何时使用@ResponseBody Annotation 在Spring
REST中返回JSON响应?


问题答案:

我认为MappingJackson2JsonView是很好的实现。

但是ResponseBody有一些优点。借助@ResponseBody的帮助,您可以将对象不作为属性返回,例如

class Student extends ResponseDTO{
   publci String name = "John"
}
...
@ResponseBody ResponseDTO  getStudentInfo(){
  return new Student();
}

结果将是{“ name”:“ John”}

使用MappingJackson2JsonView,您必须在属性中返回对象,例如

{
  "student": {
               "name":"John"
             }
}

使用@ResponseBody也可以通过内联对象扩展返回结果

 @ResponseBody getStudentInfo(){
  return new Object(){
     public String name="John"
 };
}

但这不是很好的实现

一些实现良好的MappingJackson2JsonView很好。但是对于更多功能(例如返回对象或返回ResponseDto),ResponseBody更为有用。