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

SpringMVC @ResponseBody注解详解

概要

@ResponseBody是 Spring MVC 中的一个重要注解,用于指示方法的返回值应该直接作为 HTTP 响应体返回,而不是解析为视图名称。

基本功能

@ResponseBody主要用于

  • 将Java对象转换为HTTP响应体(通常是JSON或XML)
  • 绕过视图解析器直接返回数据
  • 构建RESTful API

使用方式

方法级别

@GetMapping("/user/{id}")
@ResponseBody
public User getUser(@PathVariable Long id) {return userService.findById(id); // 直接返回User对象,自动转换为JSON
}

类级别(结合@Controller)

@Controller
@ResponseBody
@RequestMapping("/api/users")
public class UserApiController {// 所有方法都自动使用@ResponseBody
}

更简洁的@RestController

Spring4.0引入了@RestController,它组合了@Controller和@ResponseBody:

@RestController // 等同于 @Controller + @ResponseBody
@RequestMapping("/api/users")
public class UserApiController {// 所有方法都自动使用@ResponseBody
}

工作原理

  1. 当方法标注@ResponseBody时:
    1. Spring会使用HttpMessageConverter将返回值转换为指定格式
    2. 默认情况下,如果类路径有Jackson库,会转换为JSON
  2. 转换过程:

    Java对象 → HttpMessageConverter → HTTP响应体(JSON/XML等)

常见用途

返回JSON数据:

@GetMapping("/orders")
@ResponseBody
public List<Order> getOrders() {return orderService.findAll();
}

返回简单字符串:

@GetMapping("/status")
@ResponseBody
public String getStatus() {return "OK";
}

自定义相应内容类型:

@GetMapping(value = "/xml", produces = MediaType.APPLICATION_XML_VALUE)
@ResponseBody
public User getXmlUser() {return new User("John", "Doe");
}

相关注解

注解说明
@RequestBody将HTTP请求体转换为Java对象
@RestController组合了@Controller和@ResponseBody
@ResponseStatus指定HTTP响应状态码
http://www.lryc.cn/news/591134.html

相关文章:

  • 如何选择合规的上门按摩系统
  • Maven详细解
  • 3D Gaussian Splatting (3DGS) 从入门到精通:安装、训练与常见问题全解析
  • 【Bluedroid】btif_a2dp_sink_init 全流程源码解析
  • 【Leetcode】栈和队列算法题(逆波兰表达式、二叉树层序遍历、最小栈、栈的压入弹出序列)
  • CrewAI与LangGraph:下一代智能体编排平台深度测评
  • onenote千年老bug,字体bug (calibri微软雅黑) 的解决
  • 深度学习损失函数详解 | Binary Cross Entropy(二元交叉熵)原理 + 数学推导 + Python实现
  • 中科米堆CASAIM三维激光扫描仪用于注塑件3d扫描逆向建模
  • 【Linux】第一个小程序—进度条
  • 黑色风格音乐播放器网站模板(附完整源码)
  • 前端防复制实战指南:5 种主流方案效果对比与实现
  • 北京-4年功能测试2年空窗-报培训班学测开-第五十三天
  • 数据库管理-第349期 Oracle DB 23.9新特性一览(20250717)
  • 【37】MFC入门到精通——MFC中 CString 数字字符串 转 WORD ( CString, WORD/int 互转)
  • 【华为】交换机vlan互访实验
  • 边缘智能革命:嵌入式机器学习如何让万物“思考”
  • CephFS 和 SSHFS 挂载指南:从配置到排错
  • SQL一些关于存储过程和使用的总结
  • 并发事务~
  • Selector的用法
  • 一台显示器上如何快速切换两台电脑主机?
  • Adobe Photoshop:数字图像处理的终极工具指南
  • JavaScript进阶篇——第八章 原型链、深浅拷贝与原型继承全解析
  • 爬虫逆向:一篇文章掌握 Hopper 的详细使用(macOS 和 Linux 反汇编程序:对可执行文件进行静态分析)
  • Alibaba-NLP/WebAgent 项目总结
  • 如何在PyCharm中删除虚拟环境
  • [MRCTF2020]PYWebsite
  • web APIs(更新中)
  • 中兴B860AV5.1-M2_S905L3SB最新完美版线刷包 解决指示灯异常问题