我写文章历来追求通俗易懂,今天来深入探讨一下@RequestBody注解。提起这个,所有做过mvc开发的同学应该都不陌生,使用上面肯定也是信手拈来。

所以我这里就简单的提一下这个注解的使用:

1、当客户端的HTTP请求参数contentType设置为:application/json

2、服务端的处理接口参数使用:@RequestBody注解,就会把客户参数当成一个javaBean进行耦合字段赋值,简单的说就是,把客户的json对象转换为javaBean对象

好了,现在真正进入今天的主题!我们来探究一下@RequestBody注解在后台中是如何工作的呢?这个后来就是指的spring框架。先给出注解的引用包:org.springframework.web.bind.annotation.RequestBody;很明显就是属于spring框架。所以在这里,我要给大家一个提示。在spring框架的世界里面,我们一定要把的spring框架当成一个整体来看,切记切记!!!所有springframework子包里面的类都是有联系的。

ok又回到我们的主题上,在spring的世界里面,有一个最基本的东西就是拦截器。客户的每一个HTTP请求过来的时候,都会经过它的层层把控。由于平实的开发中,除非特别的功能需求我们会单独设置拦截器。其它时候都没有去注意它。但是恰恰就是我们的忽视,让我们漏掉了很多知识点。

总体的来说,在spring中,拦截器分为两大类:

一、框架自身的拦截器

二、开发者自定义的拦截器

话不多说,直接给出答案!@RequestBody注解就是spring框架自身的拦截器在起左右,当请求过来的时候,框架会检查被请求的controller方法接口中的注解,根据注解类型,调用不同的AOP处理程序进行处理。当然这里的AOP也是spring框架底层自身造已经定义好的,所以不需要我们再进行单独设置。例如这里的@RequestBody注解调用的AOP处理程序,先是通过JoinPoint获取该注解位置的参数,然后进行上面的数据耦合。看到了吧,实际上处理很简单,最主要的就是这个框架自带的AOP。

文章的结尾,我再简单提一下注解的作用,大家记住:注解是一个特殊的类,它可以给对象、参数、方法添加额外的这个类信息。说白了就是添加了更多的信息,我们可以称注解信息为元信息。我们通过java的运行时公共方法可以获取这些信息。所以,注解只有当你定义了专门的注解处理程序的时候才有用,否则一无是处!今天的文章依旧很短,但是我们希望大家可以通过这个知识点,自行开拓思路。我只是一个引路人,知识需要自己进行消化!

深入理解@RequestBody注解的更多相关文章

  1. @requestBody注解的使用

    1.@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是ap ...

  2. springMVC中@RequestParam和@RequestBody注解的用法

    springMVC中@RequestParam注解用在Controller层获解析.提取参数,当然你也可以用request.getParameter("name")来获取参数,而@ ...

  3. 浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别

    浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别 Spring 2.5 版本新增了注解功能, 通过注解,代码编写简化了很多:但熟悉注解的使 ...

  4. @RequestBody注解用法

    做Java已经有8个多月了,但是基本没有学习过Java语言,因此在项目中写代码基本靠的是其他语言的基础来写Java代码,写出来的很多代码虽然能用,但是感觉很不地道,虽然从来没有同事说过,但是我自己觉得 ...

  5. (转)深入理解Java注解类型(@Annotation)

    背景:在面试时候问过关于注解的问题,工作中也用到过该java的特性,但是也没有深入的了解. 秒懂,Java 注解 (Annotation)你可以这样学 ps:注解最通俗易懂的解释 注解是一系列元数据, ...

  6. 理解Java注解类型

    一. 理解Java注解 注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类.而我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象$Proxy ...

  7. @RequestBody注解的参数仅仅读取一次的问题解决。

    最近在写日志管理,想着使用拦截器加注解的方式,但是遇到了一个问题,就是如果使用@RequestBody注解接收的参数只能读取一次,造成了我在拦截器中如果接收了参数,在Controller层就接收不到了 ...

  8. @RequestMapping、@ResponseBody 和 @RequestBody 注解的用法与区别

    背景: 帮助同事解决文件上传的bug(文件上传成功,但是页面提示上传接口异常,数据的确是插入了),从前端layui页面找错误,然后浏览器调试,找了半天无果.layui文件上传格式code返回是数值,后 ...

  9. 使用与不使用@RequestBody注解的区别

    1. 如果使用@RequestBody接受页面参数: public Map<String,Object> insertBudget(@ApiParam(required = true,na ...

随机推荐

  1. C/C++内存泄露检测

    以下测试基于的gcc版本: gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4Copyright (C) 2013 Free Software Foundation, In ...

  2. Clean WRH$_ACTIVE_SESSION_HISTORY in SYSAUX

    Tablespace SYSAUX grows quickly. Run Oracle script awrinfo.sql to find what is using the space. One ...

  3. Oracle 时段负载情况

    ALTER session SET nls_date_format='yyyy-mm-dd hh24:mi:ss'; SELECT *  FROM ( SELECT A.INSTANCE_NUMBER ...

  4. Native广告月入万刀的全部细节!

    一步一步跑Native原生广告: 第一步:跑native前期的准备工作 第二步:阅读大神的Native文档(100多页,英文,建议找一个支持在线翻译功能的app来阅读) 第三步:阅读我的几十条经验总结 ...

  5. 牛客网多校训练第一场 A - Monotonic Matrix(Lindström–Gessel–Viennot lemma)

    链接: https://www.nowcoder.com/acm/contest/139/A 题意: 求满足以下条件的n*m矩阵A的数量模(1e9+7):A(i,j) ∈ {0,1,2}, 1≤i≤n ...

  6. HTML和CSS实现常见的布局

    https://segmentfault.com/a/1190000003931851#articleHeader15

  7. iOS开发中方法延迟执行的几种方式

    概述 项目开发中经常会用到方法的延时调用,下面列举常用的几种实现方式: 1.performSelector 2.NSTimer 3.NSThread线程的sleep 4.GCD 1.performSe ...

  8. winform 实现定位

    如何在winform中 导入地图实现定位功能    ? 从网上下个BaiDuMap.htm, 就是个js文件 在form中加入webBrowser控件,然后在窗体的加载事件中写入如下代码 webBro ...

  9. Flex 布局教程:语法和实例

    语法篇 网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便, ...

  10. 6.可见性关键字(volidate)

    可见性关键字(volidate): 如果对java内存模型了解较清楚的话,我们知道每个线程都会被分配一个线程栈. 线程栈里存的是对象的引用,但当前cache缓存机制,可能会把数据拷贝. 就是,命中缓存 ...