侧边栏壁纸
博主头像
资深人工智能从业者博主等级

行动起来,活在当下

  • 累计撰写 198 篇文章
  • 累计创建 84 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Java Spring 框架 @Controller 与 @RestController的区别

MobotStone
2023-03-03 / 0 评论 / 0 点赞 / 314 阅读 / 2163 字

image

概述

@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的区别

  1. @Controller是在 Spring 中将类标记为控制器类的注解,而@RestController用于REST Web 服务,类似于@Controller@ResponseBody。
  2. @Controller注释表示该类是控制器,如 Web 控制器,而@RestController注释表示该类是控制器,其中@RequestMapping方法默认采用@ResponseBody(即 REST API)。
  3. 关键区别在于,一旦用@RestController注释类,就不需要在每个处理程序方法上都使用**@ResponseBody**。
  4. @Controller创建模型对象的映射并查找视图,而**@RestController**只是简单地返回对象和对象数据,直接以 JSON 或 XML 形式写入 http 响应。

可以使用@Controller注释和@ResponseBody注释来完成@RestController的工作,RESTful Web 服务的默认的。Spring 引入了@RestController ,它结合了@Controller@ResponseBody的功能。

例子

以下是 Spring 中相等的示例代码。

  • @ Controller
@Controller
@ResponseBody
Public class MVCController{
}
  • @ RestController
@RestController
public class MVCController{
}

以上两段代码在Spring MVC/Spring Boot中是同样的操作。

结论

以上就是Spring MVC/Spring Boot的@Controller注解和@RestController注解的区别。

0