Spring学习笔记_49——@ResponseBody
Spring学习笔记_46——@InitBinder
Spring学习笔记_47——@RequestAttribute
Spring学习笔记_48——@SessionAttribute
@ResponseBody
文章目录
- @ResponseBody
- 1. 介绍
- 2. 场景
- 3. 源码
- 4. Demo
- 4.1 基本用法
- 4.2 与@RestController结合
1. 介绍
在介绍RestController
注解时,提到了@ResponseBody
注解,@RestController
注解同时具备@Controller
注解和@ResponseBody
注解的功能。
@ResponseBody
是 Spring MVC 中的一个非常有用的注解,它用于将控制器(Controller)方法的返回值直接写入 HTTP 响应体(response body)中,而不是解析为视图(View)的名称。这在开发 RESTful Web 服务时尤其常见,因为通常我们需要返回 JSON 或 XML 等格式的数据,而不是视图。
2. 场景
@ResponseBody
注解往往会结合@Controller
注解和@RequestMapping
注解使用,能够将方法的返回结果响应给客户端程序。
@ResponseBody
注解在 Spring MVC 和 Spring Boot 中广泛用于将控制器(Controller)方法的返回值直接作为 HTTP 响应体(response body)发送给客户端,而不是将其解析为视图(View)名称。
3. 源码
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ResponseBody {
}
从源码可以看出,@ResponseBody
注解可以标注到类上,也可以标注到方法上,在@ResponseBody
注解中没有提供任何属性
4. Demo
4.1 基本用法
@Controller
public class MyController {
@RequestMapping(value = "/getUser", method = RequestMethod.GET)
@ResponseBody
public User getUser() {
return new User("John Doe", 30);
}
}
4.2 与@RestController结合
@RestController // 相当于 @Controller + @ResponseBody
public class MyController {
@GetMapping("/getUser")
@ResponseBody // 在这里可以省略,因为 @RestController 已经包含了 @ResponseBody
public User getUser() {
return new User("John Doe", 30);
}
}