Java Spring 框架 @Controller 与 @RestController的区别,你明白了吗?

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

概述

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

责任编辑:武晓燕 来源: 今日头条
相关推荐

2024-02-04 00:00:00

@ValidSpring@Validated

2023-10-27 07:39:44

IOC容器Spring

2022-10-24 20:25:40

云原生SpringJava

2024-01-25 09:10:10

GoRust标准库

2022-09-27 07:31:57

Property模式数据

2024-10-28 08:26:55

SpringAI语言模型1. 多模型

2022-04-07 11:15:22

PulseEventAPI函数

2022-12-30 08:35:00

2023-05-31 08:29:08

数据库CPU类型

2023-04-26 00:00:00

框架Vue.js客户

2022-04-07 08:20:22

typeinterface前端

2022-10-08 00:24:40

嵌套事务加入事务事务

2023-12-28 08:43:28

前端算法搜索

2024-01-08 20:05:32

2022-10-19 08:19:32

动态基线预警

2023-12-08 08:38:15

EventLoopAPI浏览器

2022-10-10 18:38:56

inert属性键盘

2022-05-31 07:32:19

JDK8API工具

2024-08-28 13:09:50

2023-11-06 07:37:01

函数式插槽React
点赞
收藏

51CTO技术栈公众号