从Spring MVC @RestController返回视图

由于@RestController@Controller@ResponseBody组合,我相信如果我想让我的控制器工作,因为只需用@RestController注释MVC和REST控制器应该没问题。 那是对的吗?

由于@RestController@Controller@ResponseBody,组合@ResponseBody,我认为它在内部意味着它对

  1. 接收http请求(因为@Controller
  2. 以JSON格式发送响应(因为@ResponseBody )虽然可以根据需要进行更改

@RestController不能用于返回要解析的视图。 它应该返回将被写入响应主体的数据,因此包含@ResponseBody 。 当@ResponseBody已经是类级别的注释时,您无法有选择地禁用单个处理程序方法上的@ResponseBody

您可以通过返回ModelAndView来解决它,它甚至可以在@RestController工作,但您真的不应该

 @RequestMapping public ModelAndView renderFooList() { ModelAndView mav = new ModelAndView("foo/list"); mav.addObject("foos", fooService.getFoos()); return mav; } 

最好为正常处理程序创建单独的控制器,为RESTful东西返回视图和REST控制器。 或者使用普通的@Controller注释该类,并将@ResponseBody放在您实际需要它的方法上。

@RestController注释,它将此类标记为控制器,其中每个方法都返回一个域对象/ pojo而不是视图。 这意味着我们不再使用视图解析器,我们不再直接发送响应中的html,而是将域对象转换为消费者理解的格式。