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转换。