概述
@Controller注解长期用于传统的spring MVC 框架Controller。@ RestController注解是在Spring 4.0 中引入的,以简化RESTful Web 服务的创建。
Spring MVC/Spring BOOT中的@RestController注解其实就是@Controller和@ResponseBody注解的组合。
它被添加到Spring 4.0中,使得在Spring框架中开发RESTful Web服务更加容易。
如果对**REST Web 服务有所了解的小伙伴,**那么对 REST API 和 Web 应用程序之间的区别应该不陌生。
这是来自Web 应用程序的响应通常是视图(HTML + CSS),因为它们是为人类观众准备的。
REST API只是以 JSON 或 XML 的形式返回数据,大多数 REST 客户端都是程序。这种区别在@Controller和**@RestController**注解中也很明显。
Spring MVC/BOOT中@Controller和@RestController的区别
- @Controller是在 Spring 中将类标记为控制器类的注解,而@RestController用于REST Web 服务,类似于@Controller和@ResponseBody。
- @Controller注释表示该类是控制器,如 Web 控制器,而@RestController注释表示该类是控制器,其中@RequestMapping方法默认采用@ResponseBody(即 REST API)。
- 关键区别在于,一旦用@RestController注释类,就不需要在每个处理程序方法上都使用**@ResponseBody**。
- @Controller创建模型对象的映射并查找视图,而**@RestController**只是简单地返回对象和对象数据,直接以 JSON 或 XML 形式写入 http 响应。
可以使用@Controller注释和@ResponseBody注释来完成@RestController的工作,RESTful Web 服务的默认的。Spring 引入了@RestController ,它结合了@Controller和@ResponseBody的功能。
例子
以下是 Spring 中相等的示例代码。
- @ Controller
- @ RestController
以上两段代码在Spring MVC/Spring Boot中是同样的操作。
结论
以上就是Spring MVC/Spring Boot的@Controller注解和@RestController注解的区别。