SpringMVC中@RequestBody和@ResponseBody两个注解的区别

简介: 📒 程序员小王的博客:程序员小王的博客🎉 欢迎点赞 👍 收藏 ⭐留言 📝😊 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕🍅java自学的学习路线:java自学的学习路线今天我想详细的了解一下Spring MVC中@RequestBody和@ResponseBody的区别,让我自己在开发中更好的使用这两个注解

一、@RequestBody

1、作用

在SpringMvc中。@RequestBody注解会自动的把一个JSON的字符串转换为一个java对象


前端的json字符串

{
    "id":15,
    "name":"刘建平",
    "salary":32000,
    "age":23
}


-= 将前端的json转换为java对象


0.png


如果HttpRequestBody携带了正确的JSON,SpringMVC会自动将这个JSON反序列化为一个java对象。通常情况下,我们必须使用@RequestBody标注的java类与客户端发送的JSON相对应


注意:java类中的属性名与JSON中的键名必须完全一样,不一样的键值是不会被反序列化到java对象中的

public class TEmp implements Serializable {
    private static final long serialVersionUID = 429425014454194277L;
    private Integer id;
    private String name;
    private String salary;
    private Integer age;

2、作用范围

查看源码可知:作用范围只能在方法的参数列表上


@Target({ElementType.*}):作用:用来指定自定义注解的作用范围


Target中的ElementType

    //类上
    TYPE,
    /**成员变量上 */
    FIELD,
    /**方法上*/
    METHOD,
    /**参数上*/
    PARAMETER,
    /** 构造方法上*/
    CONSTRUCTOR,
    /** 本地变量上 */
    LOCAL_VARIABLE,
    /** 注解类型上 */
    ANNOTATION_TYPE,
    /** 包上 */
    PACKAGE,
    /**
     * 
     *
     * @since 1.8
     */
    TYPE_PARAMETER,
    /**
     * 
     *
     * @since 1.8
     */
    TYPE_USE


@Retention:指定注解的生效时期,其中RUNINE指运行时有效


//JDK提供的注解,修饰注解的注解,元注解
@Target({ElementType.PARAMETER})   //作用:勇来指定自定义注解的作用范围
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestBody {
    boolean required() default true;
}


1.png


二、@ResponseBody

@ResponseBody注解告诉控制器,返回的对象需要自动化序列成JSON,并通过HttpResponseBody返回给客户端


控制器通过id查询用户

  /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @ResponseBody
    @GetMapping("{id}")
    public ResponseEntity<TEmp> queryById(@PathVariable("id") Integer id) {
        return ResponseEntity.ok(this.tEmpService.queryById(id));
    }

在浏览器的开发者控制台或者使用像Postman这样的工具,我们可以看到以下的响应:

{
    "id": 8,
    "name": "王恒杰",
    "salary": "12000.0",
    "age": 21
}


2.png


请记住,如果控制器使用了@RestController注解,就不需要再使用 @ResponseBody了,因为它已经默认添加的。

查看@RestController的源码@RestController=@Controller+@ResponseBody并且@RestController的作用范围是在类上


@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
    @AliasFor(
        annotation = Controller.class
    )
    String value() default "";
}


3.png


相关文章
|
JSON 前端开发 Java
Spring MVC入门必读:注解、参数传递、返回值和页面跳转(下)
Spring MVC入门必读:注解、参数传递、返回值和页面跳转(下)
113 0
|
JSON 前端开发 Java
SpringMVC系列(二)之常用注解介绍及参数传递说明
SpringMVC系列(二)之常用注解介绍及参数传递说明
|
存储 JSON 前端开发
SpringMVC的注解、参数传递、页面跳转
SpringMVC的注解、参数传递、页面跳转
101 0
|
前端开发 Java Spring
39SpringMVC - 注解映射器和适配器
39SpringMVC - 注解映射器和适配器
65 0
|
28天前
|
前端开发 Java Spring
Spring MVC核心:深入理解@RequestMapping注解
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的核心,它将HTTP请求映射到控制器的处理方法上。本文将深入探讨`@RequestMapping`注解的各个方面,包括其注解的使用方法、如何与Spring MVC的其他组件协同工作,以及在实际开发中的应用案例。
42 4
|
28天前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
108 2
|
28天前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
47 2
|
28天前
|
前端开发 Java 开发者
Spring MVC中的控制器:@Controller注解全解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序控制层的核心。它不仅简化了控制器的定义,还提供了灵活的请求映射和处理机制。本文将深入探讨`@Controller`注解的用法、特点以及在实际开发中的应用。
75 0
SpringMVC入门到实战------3、@RequestMapping注解(超详细基础知识+实际代码案例)
该博客文章详细介绍了SpringMVC中`@RequestMapping`注解的使用方法,包括其功能、位置、value属性、method属性、params属性、headers属性以及支持的路径风格和占位符,并通过实际代码案例展示了如何建立请求与控制器方法之间的映射关系。
SpringMVC入门到实战------3、@RequestMapping注解(超详细基础知识+实际代码案例)
|
7月前
|
前端开发 Java Spring
请求映射掌握:探讨Spring MVC中@RequestMapping注解的妙用
请求映射掌握:探讨Spring MVC中@RequestMapping注解的妙用
174 1
请求映射掌握:探讨Spring MVC中@RequestMapping注解的妙用