在讲这两者的区别时,首先要理解@ResponseBody注解的作用。Controller中的方法加上这个注解后,会将返回的对象,直接以一定格式(基于格式转换器,大多为JSON、XML等格式)返回(写入到了Response的body数据区),不会再走视图处理器。
@RestController就相当于@Controller+@ResponseBody。
(1)当需要返回到页面时,可以使用@Controller给Controller类标注,然后直接return到页面即可。
(2)当需要直接以一定格式返回数据内容时,比如为AJAX请求返回JSON,就可以用@RestController标注。
(3)当在一个Controller类中,既有需要返回页面的方法,又有需要返回数据内容的方法时,可以给Controller添加@Controller注解,然后再为需要返回数据内容的方法添加@ResponseBody注解。