Spring Response Json数据属性名大写变小写原因追溯

从断点切入,跟踪发现类的field字段存储在BeanPropertyWriter中,在BeanPropertyWriter各处设断点,拦截到BeanSerializerFactory
BeanSerializerFactory

进一步跟踪,发现在POJOPropertiesCollector中属性名称发生改变
POJOPropertiesCollector

最终定位到BeanUtil中,发现和驼峰命名规则有关
BeanUtil

如下,红框部分是罪魁祸首
BeanUtil

以下为断点位置图

心得:
字段名称第二个字母不能为大写,否则会被jackson改写为小写
调用原理
此外,此次跟踪发现,spring采用的是jackson进行参数序列化和反序列化
其中,序列化处理器存在缓存里
SerializerCache

首次查找某个类的序列化处理器时,新建处理器和类属性信息,并存储到缓存中,第二次直接查找和调用。
定位思路
如果跟踪代码没有思路时,可以在最基础的bean中设置断点拦截
如果断点频繁时,可以设置断点条件
如果对整个结构不了解,可以去看jar包整体文件目录,大致有个轮廓,如下便是在jackson 的jar包中发现的驼峰规则。

正文到此结束