SpringBoot不同模块间类引用无法获取json对象参数中的字段值

今天在测试调整项目结构代码后,对数据的发送接收做测试,发现数据能接收到,但是接收到的字段全都是空的

排查过程

1.1、追踪数据源头

  1. 通过远程调试确认数据是正常发送,每个字段都是有值的

1.2、确认数据接收实体对象是否有问题

           一开始以为是并发导致的,因为其他地方也有用到该实体,但是调试过程中发现堆栈信息根本不是其他线程上下文,

           重新还原原本的代码(没有恢复原本的代码结构),尝试每个字段的get/set都加this还是不行

回滚代码

在并发问题的思路上耗费太多时间,决定先把代码回滚到修改模块依赖的版本,跑起来竟然正常了,有点不可思议

分析确认问题原因

重新整理思路:

1、本次调整只修改代码依赖结构,不大可能是并发问题,有的话之前就出现了

2、数据流向:数据发送--》解析json》接收为实体,从结果上看,实体接收不到数据,应该就是解析出问题了

解决问题

重新看了代码的引入包,发现一个是用的

com.fasterxml.jackson.annotation.JsonProperty;

一个用的是

org.codehaus.jackson.annotate.JsonProperty;

将两个模块的json都用jackson,将公共的A模块中的json依赖改成和B一致就行,在A中加入以下依赖

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.8</version>
        </dependency>

反思

  1. 遇到问题时应联想前后改动了啥,不要不明不白地就开始着手解决
  2. 数据流向是问题定位的最好方法,出现问题必须先找到真正的问题根源再动手

猜你喜欢

转载自blog.csdn.net/JacksonKing/article/details/89574092