spring @Controller和@RestController注释之间的区别。

@Controller注释可以同时用于Web MVC和REST应用程序吗? 如果是,我们如何区分它是Web MVC还是REST应用程序?


当前回答

@RestController是@Controller和@ResponseBody的组合。

@Controller类中的请求流,不使用@ResponseBody注释:

@RestController返回一个对象作为响应而不是视图。

其他回答

如果你使用@RestController,你不能返回一个视图(通过在Spring/springboot中使用Viewresolver),并且在这种情况下不需要@ResponseBody。

如果你使用@Controller你可以在Spring web MVC中返回一个视图。

@RestController注释类与@Controller相同,但处理器方法上的@ResponseBody是隐含的。

@RestController是@Controller和@ResponseBody的组合,如果我们在方法签名中不使用@ResponseBody,那么我们需要使用@RestController。

Spring4+中的新@RestController注释,它将类标记为控制器,其中每个方法返回一个域对象而不是视图。它是@Controller和@ResponseBody滚动在一起的简写。

而不是使用@Controller和@ResponseBody, @RestController让你在Spring 4.0和更高版本中公开Rest api。