前言
用springboot开发一个demo,发现有个put请求无法获取参数。跟踪源码发现是lombok生成的get和set方法不符合规范,jackjson按照规范解析字段名时无法匹配,导致赋值失败产生问题。
代码描述
private String uAccount;
private String uPassword;
private String uName;
private String uEmail;
private String uPhone;
private Long uCollege;
- 这个类有这么几个属性,使用了lombok的@Data注解生成getters&setters, 生成的方法举个例子:
private String uAccount;
public void setUAccount(String arg1) {uAccount = arg1;}
public String getUAccount() {return uAccount;}
问题解决
- JavaBean 规范中有一个特别的地方,如果属性名的第二个字母是大写的,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,也就是说大小写不变。 这句话引用自这里 点击查看
- 所以正确的写法应该是
private String uAccount;
public void setuAccount(String account) {uAccount = account;}
public String getuAccount() {return uAccount;}
补充
lombok版本为1.18.12

在Springboot项目中,由于Lombok的@Data注解生成的getter和setter方法与Jackson解析规则不匹配,导致PUT请求无法正确解析参数。问题在于属性名首字母小写,第二个字母大写。解决方案是遵循JavaBean规范,手动调整属性命名或更新Lombok版本。
446

被折叠的 条评论
为什么被折叠?



