ResponseBody
本文主要介绍ResponseBody
注解的使用方法,开发者不可将ResponseBody
注解和ResponseBody注解混淆。
ResponseBody
注解用于使用了Controller注解的类中的方法上,它的作用是让使用了Controller注解的类中的方法像使用了RestController注解的类中的方法一样,直接将返回值作为响应发送给客户端。
示例
在Controller章节中介绍了以下示例:
@Controller
public class PageController {
@GetMapping("/")
public String forward() {
return "forward:/index.html";
}
@GetMapping("/welcome")
public String redirect() {
return "redirect:/index.html";
}
}
如果我们想在上述示例中的返回值当作响应消息返回,而不是做转发和重定向时,就需要ResponseBody
注解了:
@Controller
public class PageController {
@GetMapping("/")
public String forward() {
return "forward:/index.html";
}
@ResponseBody
@GetMapping("/welcome")
public String redirect() {
return "redirect:/index.html";
}
}
如上所示,第一个方法仍然做服务器内部转发,第二个方法会直接输出redirect:/index.html
到客户端。
另外,如果使用Controller
注解加ResponseBody
注解将达到RestController
的效果:
@ResponseBody
@Controller
public class PageController {
@GetMapping("/")
public String forward() {
return "forward:/index.html";
}
@GetMapping("/welcome")
public String redirect() {
return "redirect:/index.html";
}
}
如上所示,两个方法的返回值都将会作为响应消息输出到客户端。
注意:如果开发者使用了MessageConverter,那么有
ResponseBody
注解的返回值还会经过MessageConverter
转换。