踩坑记录:spring boot的POST请求数据注入不了的问题
概述:
今天在使用spring boot框架的时候,踩了一个坑,是关于control层request body依赖注入的问题的,内容如下:
进过:
由于目前公司采用的系统架构,要求把springboot的control层,以接口的形式单独暴露出入,而具体control层的代码,则放在另一个包里实现。这种把control层以接口方式实现的方式,导致了我今天在使用spring boot的@RequestBody的注解的时候,出了问题。
根据我之前的经验,我是把control层的相关注解,都放在了接口类里。包括@RequestMapping、@Valid等,一路开发下来也没什么问题,GET请求都能正常收到。可是到了写POST的时候,出现问题了。一开始我是把@RequestBody放在接口类里的方法参数前的,可是这样就导致了所有传过来的body里的请求都注入不到参数对象里。后来经过很长时间的折腾,终于发现,把这个参数放在实现类里的方法参数前,就能接到传过来的数据了。而我又测了下,想把@Valid参数也放到实现方法的参数前,却发现这样不行,程序会报错。我猜测,可能是和2个注解的处理时机有关。@Valid方法应该是在接口实现前,就对参数进行了处理。而@RequestBody方法,则是在接口实现后,才对方法参数进行注入。
总结:
如果对spring boot的control层进行接口分类,@RequestBody注解要写在实现类里
示例代码:
接口类:
/**
* 发表评论
*
* @param commentAddVo 发表评论的内容VO
* @return 执行结果
*/
@RequestMapping(method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, value = "/add")
Result<Boolean> addComment(@Valid @RequestBody CommentAddVo commentAddVo);
实现类:
@Override
public Result<Boolean> addComment(@RequestBody CommentAddVo commentAddVo) {
//todo 这里info日志加用户id
log.info("CommentFacade addComment entrance:userId");
log.debug("CommentFacade addComment entrance:"+ commentAddVo); return ResultHelper.succeed(true);
}
踩坑记录:spring boot的POST请求数据注入不了的问题的更多相关文章
- 踩坑录- Spring Boot - CORS 跨域 - 浏览器同源策略
1.解决办法,创建一个过滤器,处理所有response响应头 import java.io.IOException; import javax.servlet.Filter; import javax ...
- spring boot +dubbo 踩坑记录
今天初次搭建spring boot +duboo的demo.记录一下踩坑记录. 首先搭建3个小demo,一个maven项目,两个spring boot (服务提供者和服务消费者)项目. 两 sprin ...
- SpringBoot+SpringSecurity+Thymeleaf认证失败返回错误信息踩坑记录
Spring boot +Spring Security + Thymeleaf认证失败返回错误信息踩坑记录 步入8102年,现在企业开发追求快速,Springboot以多种优秀特性引领潮流,在众多使 ...
- SpringBoot + Shiro + shiro.ini 的踩坑记录
0.写在前面的话 好久没写博客了,诶,好多时候偷懒直接就抓网上的资料丢笔记里了,也就没有自己提炼,偷懒偷懒.然后最近参加了一个网络课程,要交作业的那种,为了能方便看下其他同学的作业,就写了个爬虫把作业 ...
- 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密
你真的了解字典(Dictionary)吗? 从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...
- SUCTF 2019 Upload labs 2 踩坑记录
SUCTF 2019 Upload labs 2 踩坑记录 题目地址 : https://github.com/team-su/SUCTF-2019/tree/master/Web/Upload La ...
- unionId突然不能获取的踩坑记录
昨天(2016-2-2日),突然发现系统的一个微信接口使用不了了.后来经查发现,是在网页授权获取用户基本信息的时候,unionid获取失败导致的. 在网页授权获取用户基本信息的介绍中(http://m ...
- CentOS7.4安装MySQL踩坑记录
CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...
- ubuntu 下安装docker 踩坑记录
ubuntu 下安装docker 踩坑记录 # Setp : 移除旧版本Docker sudo apt-get remove docker docker-engine docker.io # Step ...
随机推荐
- json.dumps(),json.loads(),json.dump(),json.load()方法的区别
1. json.dumps() json.dump()是将字典类型转化成字符串类型. import json dic = {'a':'1111','b':'2222','c':'3333','d':' ...
- 大数据学习路线:Zookeeper集群管理与选举
大数据技术的学习,逐渐成为很多程序员的必修课,因为趋势也是因为自己的职业生涯.在各个技术社区分享交流成为很多人学习的方式,今天很荣幸给我们分享一些大数据基础知识,大家可以一起学习! 1.集群机器监控 ...
- The Little Prince-12/17
The Little Prince-12/17 今年四六级吐槽,说到做到!!!文思泉涌了兄弟们! “这就是你自己的错了,我本来并不想给你带来任何痛苦的,可你却要我驯服你……可你要哭了,可你什么好处也没 ...
- 隐藏域传值到后台controller
开发背景:一个页面有一个下拉框和一个单选按钮,下拉框保存的是厂商信息,单选按钮保存的是产品信息.每次下拉框的内容被选中,把厂商编码保存到隐藏域 <input type="hidden& ...
- django创建app、在视图函数及url中使用参数、url命名、通过redirect实现网页路径跳转
app用来实现一个独立的功能,视图一般都写在app的view.py中,并且视图的第一个参数永远是request,视图的返回值必须是HttpResponseBase对象或子类的对象. 创建一个app:f ...
- Zookeeper集群方式安装
分布式安装部署 配置系统环境变量等 /etc/profile export JAVA_HOME=/opt/app/jdk1.8.0_181 #export CLASSPATH=.:${JAVA_HOM ...
- 单元测试Mock框架Powermockito 【mockito1.X】
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> &l ...
- PyCharm‘s Project Deployment
当在本地写完项目,部署到服务器上调试的时候,难免会碰到代码的修修改改,但由于项目在服务器上,修改起来相对麻烦.各路大神或许有自己的方法去解决.这篇博客演示利用PyCharm的Deployment功能, ...
- spring List,Set,Map,Properties,array的配置文件注入方式
虽然不多,但是有时候在实现的时候,我们还是希望某些参数或者属性通过集合()的方式注入进来,比如配置表参数列表,addresslist,亦或是三方库等等.因为这种改动不是很多,经常一时想不起来,今天做个 ...
- 集合框架-Map集合
* Map集合和Collection集合的区别? * Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的.可以把这个理解为:夫妻对 * Collection集合存储元素是单独出现的, ...