何时在基于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";
}
}
我是新手 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";
}
}