写这篇文章主要是记录自己做新增接口时踩的大蠢坑,而且本人对异常报错阅读能力偏弱,加上英文底子一般,借着实操复盘巩固排错思路。

一、Service 层 Mapper Bean 注入失败

首先在我项目启动时就翻车了,当时犯了一个十分愚蠢的问题:

描述意思是:AdminServiceImpl这个类里的adminMapper字段,需要一个类型为AdminMapper的Bean对象,但是Spring容器找不到这个对象。

Spring容器找不到对象,最有可能因为这几种

  1. Mapper、Service 层缺少@Mapper@Service这类 Spring 托管注解,类没有交给 Spring 管理;
  2. 当前类所在包路径,不在 SpringBoot 启动类的组件扫描范围之内;
  3. Maven 依赖缺失、版本冲突导致类加载异常。

小编翻车原因是第二中(内心大喊我是大蠢蛋):AdminServiceImpl按理来说归属shopping_admin_service管理员微服务模块,结果没注意看写到了shopping_goods_service商品服务模块里, 能扫到才怪。

goods商品服务的MapperScan只扫描goods.mapper,所以AdminMapper不会被注册为SpringBean.

二、接口调试报「缺少请求参数」异常

测试的时候又遇见了新报错呢!

MissingServletRequestParameterException缺少请求参数异常

意思是:接口方法里声明了必须传入名为admin的参数,类型是Admin实体,但前端请求里没有携带这个参数。

可能原因:

  • 请求方式不匹配。有两个长得很像的大哥:@RequestParam适配 GET 拼接参数、表单 Form 提交;@RequestBody专门承接 POST 方式的 JSON 请求体,二者不能混用;
  • 前后端参数 key 命名不一致,注解绑定参数名和前端传递字段名对不上。

排查后发现是注解使用错误:这个接口是 POST JSON 请求,应该用@RequestBody,我误写成RequestParam了

顺带踩了个测试工具的小失误:在 Postman调试接口时,没有勾选 JSON 请求体格式,请求格式错误同样会造成参数无法正常解析。

三、总结:

我是大蠢蛋啊啊啊啊! ! !

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐