深入理解@RequestBody注解
我写文章历来追求通俗易懂,今天来深入探讨一下@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注解的更多相关文章
- @requestBody注解的使用
1.@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是ap ...
- springMVC中@RequestParam和@RequestBody注解的用法
springMVC中@RequestParam注解用在Controller层获解析.提取参数,当然你也可以用request.getParameter("name")来获取参数,而@ ...
- 浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别
浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别 Spring 2.5 版本新增了注解功能, 通过注解,代码编写简化了很多:但熟悉注解的使 ...
- @RequestBody注解用法
做Java已经有8个多月了,但是基本没有学习过Java语言,因此在项目中写代码基本靠的是其他语言的基础来写Java代码,写出来的很多代码虽然能用,但是感觉很不地道,虽然从来没有同事说过,但是我自己觉得 ...
- (转)深入理解Java注解类型(@Annotation)
背景:在面试时候问过关于注解的问题,工作中也用到过该java的特性,但是也没有深入的了解. 秒懂,Java 注解 (Annotation)你可以这样学 ps:注解最通俗易懂的解释 注解是一系列元数据, ...
- 理解Java注解类型
一. 理解Java注解 注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类.而我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象$Proxy ...
- @RequestBody注解的参数仅仅读取一次的问题解决。
最近在写日志管理,想着使用拦截器加注解的方式,但是遇到了一个问题,就是如果使用@RequestBody注解接收的参数只能读取一次,造成了我在拦截器中如果接收了参数,在Controller层就接收不到了 ...
- @RequestMapping、@ResponseBody 和 @RequestBody 注解的用法与区别
背景: 帮助同事解决文件上传的bug(文件上传成功,但是页面提示上传接口异常,数据的确是插入了),从前端layui页面找错误,然后浏览器调试,找了半天无果.layui文件上传格式code返回是数值,后 ...
- 使用与不使用@RequestBody注解的区别
1. 如果使用@RequestBody接受页面参数: public Map<String,Object> insertBudget(@ApiParam(required = true,na ...
随机推荐
- Jenkins的job执行arquilian test时总是报JBoss启动失败错误
我的Jenkins环境是一个Master+一个slave,Job的执行主要由slave来进行.Master只负责调度. slave上安装有JDK7.JDK8.slave agent用的是java we ...
- zabbix 添加 ROS 软路由监控 WinBox设置
如图设置
- ubuntu install chrome
sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/ wget -q -O - h ...
- Ubuntu 下安装apache+PHP
1.安装apache2 sudo apt-get install apache2 运行如下命令重启:sudo /etc/init.d/apache2 restart 在浏览器里输入http://loc ...
- js算法排序
一.选择算法排序(算法时间复杂度为O(n²)级别) 选择排序就是选择数组中的最小的树,依次排序.第一次选择最小的数放在第一位,第二次从剩余的元素中寻找最小的元素放在第二位,第三次在剩余的数中选择最小的 ...
- MongoDB的角色作用(1)
MongoDB的角色作用: 经过大量血的教训,一个分片配置两个副本集时(一个是primary一个是secondary),如果primary挂掉,secondary是不会升级的,必须要加上一个不存储数据 ...
- java根据数据库自动生成代码
出现这个已经创建成功 出现这个情况,没有使用DBUtil,引入即可 已经创建完成 代码下载:https://github.com/weibanggang/tool 项目实例下载:https://pan ...
- [转]java中文乱码的解决
在基于Java的编程中,经常会碰到汉字的处里及显示的问题,比如一大堆乱码或问号. 这是因为JAVA中默认的编码方式是UNICODE,而中国人通常使用的文件和DB都是基于GB2312或者BIG5等编码, ...
- @RestController失效
@RestController 注解失效.就是本来应该是直接返回数据.而不是去查找视图.但是去查找视图了.我这人不喜欢弄一些无用的配置文件.所以用到什么.引用什么.但是也容易犯错误.不过也好.对哪里出 ...
- PCB测试点的设计要求
测试点的设计要求:1.定位孔采用非金属化的定位孔 ,误差小于0.05mm.定位孔周围3mm不能有元件.2.测试点直径不小于0.8mm,测试点之间的间距不小于1.27mm,测试点离元件不小于1.27mm ...