当前位置: 首页 > article >正文

@Controller 和 @RestController 区别

  1. 功能范畴:

    • @Controller:用于定义一个控制器类,主要用于处理用户请求并返回视图(通常是HTML页面)。常常与 Spring MVC 的视图解析器一起使用。
    • @RestController:是一个特殊类型的控制器,用于返回数据而不是视图。它用于构建 RESTful Web 服务,返回 JSON、XML 或其他格式的数据。
  2. 返回值处理:

    • @Controller 的方法默认返回的是视图名。如果想返回 JSON 数据,需要额外使用 @ResponseBody 注解。
    • @RestController 是一个组合注解,实际上是 @Controller 和 @ResponseBody 的结合。使用 @RestController 标注的类中的每个方法返回的数据会被自动序列化为 JSON(或其他格式),而不是视图名称。
使用 @Controller 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class MyController {
    
    @GetMapping("/hello")
    public String hello() {
        return "hello"; // 返回视图名
    }
}
使用 @RestController 
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyRestController {
    
    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!"; // 直接返回数据
    }
}

为什么引入 @RestController

  1. 简化代码: @RestController 减少了在使用 @Controller 时必须显式添加 @ResponseBody 注解的需求,使代码更简洁清晰。

  2. 清晰的意图:使用 @RestController 明确表示该类的目的是为了提供 RESTful API,使得代码的可读性更强。

  3. 语义的明确:在 RESTful 开发中,使用 @RestController 提供一种语义上的约定,帮助其他开发者快速理解这个控制器的角色和所期望的返回格式。

何时使用

  • 当你需要返回视图(HTML 页面)时,使用 @Controller
  • 当你构建 RESTful Web 服务,并且需要返回 JSON 或 XML 数据时,应使用 @RestController

 


http://www.kler.cn/a/379193.html

相关文章:

  • 力扣排序350题 两个元组的交集2
  • 显存占用 显存测试
  • 集合进阶------泛型(JAVA笔记第三十期)
  • 【OpenGL】vs中glsl高亮显示插件
  • Jmeter——结合Allure展示测试报告
  • Vscode使用launch.json进行传参调试代码
  • 3.1 快速启动Flink集群
  • 速卖通商品详情API接口,json数据参考(案例)
  • npm入门教程3:npm安装
  • qt QTextEdit详解
  • 005-Kotlin界面开发之程序猿初试Composable
  • LongVU :Meta AI 的解锁长视频理解模型,利用自适应时空压缩技术彻底改变视频理解方式
  • vrrp和mstp,vrrp和byd
  • 无人机避障——使用三维PCD点云生成的2D栅格地图PGM做路径规划
  • LlamaIndex框架学习-提示词的几种使用模式
  • JVM1.8内存模型
  • 力扣每日一题 3165. 不包含相邻元素的子序列的最大和
  • MySQL存储引擎——针对实习面试
  • 海康视频不能在浏览器解析播放,需要转码
  • 链表详解(三)
  • mmpretrainmmdetection环境配置
  • 高并发场景下的性能测试方法!
  • ethers.js 创建钱包,导入助记词,导入私钥)
  • 浅析Android Handler机制实现原理
  • ssm037物流管理系统设计与实现+jsp(论文+源码)_kaic
  • 克服奖励欺骗:Meta发布全新后训练方式CGPO,编程水平直升5%,打破RLHF瓶颈