spring @Controller和@RestController注释之间的区别。
@Controller注释可以同时用于Web MVC和REST应用程序吗? 如果是,我们如何区分它是Web MVC还是REST应用程序?
spring @Controller和@RestController注释之间的区别。
@Controller注释可以同时用于Web MVC和REST应用程序吗? 如果是,我们如何区分它是Web MVC还是REST应用程序?
当前回答
@Controller:这个注释只是@Component的一个特殊版本,它允许基于类路径扫描自动检测控制器类。 @RestController:这个注释是@Controller的一个特殊版本,它自动添加@Controller和@ResponseBody注释,这样我们就不必把@ResponseBody添加到映射方法中了。
其他回答
@RestController是@Controller和@ResponseBody的组合。
@Controller类中的请求流,不使用@ResponseBody注释:
@RestController返回一个对象作为响应而不是视图。
正如您在Spring文档(Spring RestController documentation)中看到的,RestController注释与Controller注释相同,但假设@ResponseBody默认是活动的,因此所有Java对象都被序列化为响应体中的JSON表示。
如果你使用@RestController,你不能返回一个视图(通过在Spring/springboot中使用Viewresolver),并且在这种情况下不需要@ResponseBody。
如果你使用@Controller你可以在Spring web MVC中返回一个视图。
@Controller:这个注释只是@Component的一个特殊版本,它允许基于类路径扫描自动检测控制器类。 @RestController:这个注释是@Controller的一个特殊版本,它自动添加@Controller和@ResponseBody注释,这样我们就不必把@ResponseBody添加到映射方法中了。
@RestController是@Controller和@ResponseBody的组合,如果我们在方法签名中不使用@ResponseBody,那么我们需要使用@RestController。