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

目录

1.问题现象

2.问题实质

3.问题原因      

4.解决方法


1.问题现象

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

 

2.问题实质

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

3.问题原因         

private String xIndex;

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

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

        因为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