SpringMVC @ResponseBody注解详解

概要

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

基本功能

@ResponseBody主要用于

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

使用方式

方法级别

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

类级别(结合@Controller)

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

更简洁的@RestController

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

java 复制代码
@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数据:

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

返回简单字符串:

java 复制代码
@GetMapping("/status")
@ResponseBody
public String getStatus() {
    return "OK";
}

自定义相应内容类型:

java 复制代码
@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响应状态码
相关推荐
zhangfeng11335 小时前
亲测可用,R语言 ggplot2 箱线图线条控制参数详解,箱线图离散数值控制
开发语言·python·r语言·生物信息
yzx9910135 小时前
国庆科技感祝福:Python 粒子国旗动画
开发语言·人工智能·python
摇滚侠5 小时前
Spring Boot中使用线程池来优化程序执行的效率!笔记01
java·spring boot·多线程
毕设源码-江学长5 小时前
计算机毕业设计java共享茶室预约微信小程序 微信小程序中的共享茶室预订平台 茶室共享预约小程序的设计与开发
java·微信小程序·课程设计
迪丽热爱5 小时前
【练】C程序设计-01程序设计和C语言
c语言·开发语言
扶尔魔ocy5 小时前
【QT常用技术讲解】opencv实现摄像头图像检测并裁剪物体
开发语言·qt·opencv
卡布奇诺-海晨6 小时前
2025版本的idea解决Git冲突
java·git·intellij-idea
Flash Dog6 小时前
【MyBatis】——执行过程
java·mybatis
Li_7695326 小时前
2025.2.X 版本 IDEA maven 打包乱码问题的解决
java·maven·intellij-idea
偷光7 小时前
浏览器中的隐藏IDE: Elements (元素) 面板
开发语言·前端·ide·php