@RestController是@ResponseBody + @Controller合体,当你在这个controller中方法只是想返回一个页面时,就不能用@RestController,因为它会把你的返回值当作数据返回,而不是页面名字,所以这时候就只能用@Controller。
如:
@RestController
public class HomeController {
@RequestMapping("/")
public String index(Model model){
Msg msg = new Msg("测试标题","测试内容","额外信息,只对管理员显示");
model.addAttribute("msg", msg);
return "home";//home.html
}
}
此时并不会返回到home.html页面,而是直接在当前页面输出home字符串。
总之一句话,返回页面用@Controller,要想返回数据就用@RestController,这个注解对于返回数据比较方便,因为它会自动将对象实体转换为JSON格式。