Lombok首字母小写,第二个字母大写造成的参数无法接收问题

目录

1.问题现象

2.问题实质

3.问题原因      

4.解决方法


1.问题现象

        如果VO实体用@Data注解生成get/set,对于首字母小写,第二个字母大写的成员变量,@RequestBody无法完成自动映射,取值为null

Lombok首字母小写,第二个字母大写造成的参数无法接收问题_第1张图片

 Lombok首字母小写,第二个字母大写造成的参数无法接收问题_第2张图片

Lombok首字母小写,第二个字母大写造成的参数无法接收问题_第3张图片

2.问题实质

        Lombook的@Data注解和Spring的Jackson对于get/set的生成方式不同

3.问题原因         

private String xIndex;

        对于这种首字母小写,第二个字母大写的成员变量,Lombook生成的get/set方法如下:

Lombok首字母小写,第二个字母大写造成的参数无法接收问题_第4张图片

        但Jackson和Idea生成的get/set方法如下:

Lombok首字母小写,第二个字母大写造成的参数无法接收问题_第5张图片

        因为Lombook和jackson生成set方法的方式不同,造成SpringMVC在映射VO字段时无法找到setxIndex()方法(因为Lombook生成的是setXIndex),故自动映射失败

4.解决方法

        利用Idea生成符合Spring规范的get/set(略low)        

        利用@JsonProperty(value = "xIndex"),强制Jackson在反序列化时给属性重新命名

借鉴博文:Lombok首字母小写,第二个字母大写的问题 - 简书

                 Naming convention for getters/setters in Java - Stack Overflow

                 https://github.com/projectlombok/lombok/issues/757

你可能感兴趣的:(工作中遇到的坑,xml)