今天同事做项目时候,用Postman测试接口,结果只有一个属性有值另一个为null,但是确实是传入了,仔细对照也没有发现拼写上的错误,这时候找到了我,我一开始以为传入错误参数所以没获取到,但是自己回到座位也写了一个Demo试了下,确实没有值,然后就开始谷歌什么问题,搜索Postman的json传参问题,但是怎么搜索,都没有想要的答案,就开始从新分析,前台传入参数后台接收参数,一共是分为两个步骤的,一个是通过json格式传入,第二部分就是后台接收到json字符串将字符串转换成对象并通过setter方法赋值,这样才得到完整的数据,既然postman没有问题,传入的参数也没有问题,那么为null只有setter方法赋值出问题了,而且他这个属性名也很特殊,是第一个字母小写,第二个字母大写,我就从谷歌搜索属性赋值相关资料,果然发现了原因。
JavaBean的set和get规范:
1.第二个字母为大写的属性名要区别对待。如果属性名的第二个字母是大写的,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,就是说大小写不变。
2.属性是首字母大写,次字母小写是,你永远都找不到它的 getter/setter 方法的
3.对于 boolean 类型属性的 getter 方法是 isXxx() 还是 getXxx() 就自己决定了,isXxx() 应该更接近于自然语言,更顺溜些
image.png针对属性名的形式为第一个字母为小写,第二个字母为大写的情况,Lombok所生成的getter、setter错误。
例如:
String aBc;
这个属性正确的getter、setter方法为:
public void setaBc(String aBc){……
public String getaBc(){……
但是Lombok所生成getter、setter方法为:
public void setABc(String aBc){……
public String getABc(String aBc){……
这样的结果会导致使用像Spring时会导致注入失败
网友评论