如果只需要返回的是数据(如:JSON、XML或自定义的metatype等数据类型)不需要返回视图时,@RestController完全等同于@Controller+@Responsebody
查看RestController源码发现,@RestController注解包含了原来的@Controller和@ResponseBody注解
如果Controller中的个别方法需要只返回数据时,只需要@Responsebody可以直接作用在方法上。
@Controller
public class HelloController {
@Autowired
private GirlProperties girlProperties;
@GetMapping(value = "/hello")
@ResponseBody
public String say(){
return "Hello Word";
}
}
@ResponseBody注解是将返回的数据结构转换为 Json 格式。所以@RestController可以看作是@Controller和@ResponseBody的结合体
下面两串代码完全等价:
@ResponseBody
@Controller
public class helloController {
@RequestMapping("/boot/hello")
public String hello(){
return "hello world";
}
}
@RestController
public class helloController {
@RequestMapping("/boot/hello")
public String hello(){
return "hello world";
}
}