何时在基于Spring 的REST Api 中使用@Controller 以及何时使用@RestController 注解

When to use @Controller and when @RestController annotation in RESTApi based on Spring

我是新手 Spring,我创建了一个简单的 RestApi。现在在一些教程中,我看到控制器 class 有时用 @Controller 注释,而其他控制器用 @RestController 注释。

谁能帮我解释一下区别?谢谢

我只用了一个快速 google 搜索就得到了很多答案。 此外,这个问题已经在另一个 SO 线程中得到回答,发现 here.

但很快总结:

@Controller 用于注释您的控制器class。 使用 @Controller 时,您通常将其与 @ResponseBody 结合使用。因此,您使用 @ResponseBody 注释您的端点方法,让 Spring 知道从该特定端点期望的 return 类型。

@Controller
public ControllerClass {

   @GetMapping("/greetings")
   @ResponseBody
   private String someEndpoint(){
       return "hey";
   }

}

@RestController 简单地结合了 @Controller@ResponseBody。所以你不需要用 @ResponseBody 注释你的端点方法。您的控制器 class 的单个注释将发挥神奇作用。 return 类型的端点方法用作响应主体。

@RestController
public ControllerClass {

   @GetMapping("/greetings")
   private String someEndpoint(){
       return "hey";
   }

}