JavaBean中属性的第二个字母大写,反序列化失效问题

起因是controller写了一个post方法

 @PostMapping("test")
 public Resp orgClientIdentityIdentify(@RequestBody RequestDto) {
    // xxx
}

Bean中有一个属性

@Setter
@Getter
public class OrgClientIdentityIdentifyReqDto extends BaseReqDto implements Serializable {

    private List mCiIdentifierList;

    // ...
}

当测试接口时,`mCiIdentifierList` 始终无法注入

JavaBean中属性的第二个字母大写,反序列化失效问题_第1张图片

 JavaBean中属性的第二个字母大写,反序列化失效问题_第2张图片

 笔者尝试过各种办法后,有了惊奇的发现

这是Lombok生成的set方法(class文件)

 这是使用idea的alt+insert生成的getter、setter

JavaBean中属性的第二个字母大写,反序列化失效问题_第3张图片

 set方法上第一个字母m并没有大写!

按照笔者学习java以来都是:get、set方法会将属性的首字母转为大写,相应的反序列化的时候会将get/set后面跟着的第一个字母转小写

Lombok生成的getter/setter是符合直觉的

问题找到了,解决也很简单

1、使用@JsonProperty("mCiIdentifierList")指定

2、更改属性名,以两个小写字母开头

3、前端传数据的时候将自谦前面两个字母都传小写的即可

你可能感兴趣的:(java,开发语言)