用springcloud开发的时候,遇到了个坑:服务端传递的数据(一个对象),客户端接收不到
客户端(原错误写法):
@RequestMapping("/student/addStudent")
public void insStudent(Student student);
服务方(原错误写法):
@RequestMapping("/addStudent")
@ResponseBody
public String insStudent1(Student student) {
System.out.println(student.toString());
studentService.addStudent(student);
return "添加成功";
}
经过网上搜寻发现问题所在: Feign本质是通过http 请求的,http不能直接传递对象,一般都是把对象转换为json通过post请求传递的!
修改后代码:
客户端:
@RequestMapping(value = "/student/addStudent",consumes = "application/json")
public void insStudent(Student student);
也可以这样
@RequestMapping("/student/addStudent")
public void insStudent(@RequestBody Student student);
提供端也是一样。
特别感谢这位博主的文章帮我解决这个错误:https://blog.csdn.net/uotail/article/details/84673347
2020.3.21:
异常:Injection of resource dependencies failed ,Requested bean is currently in creation: Is there an unresolvable circular reference?
这是循环依赖导致bean注入失败
解决办法:
1.重构代码,进行解耦
2.在产生循环依赖的接口上加上@Lazy注解
@Lazy注解作用:不让这个bean一开始就加载,让他被调用的时间再加载。
参考链接:https://blog.csdn.net/dx125806/article/details/50128837
2020.3.31:
bug:在集成PageHelper时,在客户端设置分页PageHelper.startPage(pageNum,pageSize);无效,打印发现pageSize等于tatol,在查看PageHelper源码时发现一般是在PageHelper.startPage(pageNum,pageSize);方法后紧跟着查询语句才生效,而我在客户端先设置完之后是紧跟着去调用查询的接口,这样使得设置不生效,开始我还以为是依赖冲突问题,仔细思考后才发现我应该吧分页放在服务端,直接让服务端接口返回PageInfo过来就好了。