@ResponseBody 是 Spring 中一个非常重要的注解,它的主要作用是将方法的返回值直接写入 HTTP 响应体中,而不是跳转到视图页面。通常用于 RESTful API 中,返回 JSON、XML 或其他格式的数据。

用途

  1. 将返回值序列化为 JSON 或 XML:
    如果方法返回一个对象,Spring 会自动将其转换为 JSON 或 XML 格式(取决于配置和客户端请求的 Accept 头)。
  2. 直接返回数据:
    不经过视图解析器,直接将数据写入响应体。

// ... existing code ...
@GetMapping("/user")
@ResponseBody
public User getUser() {
    User user = new User();
    user.setName("John");
    user.setAge(30);
    return user;
}
// ... existing code ...
  • 返回值
  {
    "name": "John",
    "age": 30
  }

与 @RestController 的关系

@RestController 是 @Controller 和 @ResponseBody 的组合。

如果一个类标记为 @RestController,那么它的所有方法默认都会加上 @ResponseBody 的效果。

与 @Controller 的区别

@Controller:

通常用于 MVC 模式,返回视图名称(如 return “index”;)。

如果需要返回数据,必须显式加上 @ResponseBody。
@RestController 专门用于 RESTful API,默认所有方法都带有 @ResponseBody 的效果。