前言
在使用lombok
插件开发中,用到了首字母小写,第二个字母大写参数,造成接收参数为空问题
问题
1、定义一个实体类
kotlin
@Data
public class User {
private List<Hello> region;
@Data
static class Hello {
private Float xPosition;
private Float yPosition;
}
}
2、 实现一个接口
typescript
@RestController
public class IndexController {
@GetMapping("/index")
public String index() {
return "success";
}
@PostMapping("/hello")
public String hello(@RequestBody User user) {
return "success";
}
}
访问接口参数,这个时候,发现xPosition
和yPosition
接收为空

原因在于lombok
插件默认生成的get、set方法为
导致参数接收为空
解决方法
1、 使用@JsonProperty
注解
kotlin
@Data
public class User {
private List<Hello> region;
@Data
static class Hello {
@JsonProperty("xPosition")
private Float xPosition;
@JsonProperty("yPosition")
private Float yPosition;
}
}
接收参数正常
2、使用编译器自带生成的get、set方法
kotlin
@Data
public class User {
private List<Hello> region;
// @Data
static class Hello {
// @JsonProperty("xPosition")
private Float xPosition;
// @JsonProperty("yPosition")
private Float yPosition;
public Float getxPosition() {
return xPosition;
}
public void setxPosition(Float xPosition) {
this.xPosition = xPosition;
}
public Float getyPosition() {
return yPosition;
}
public void setyPosition(Float yPosition) {
this.yPosition = yPosition;
}
}
}

总结
使用lombok
插件时注意这个问题就行了,这个本身就是一个很强大的插件,能节省很多代码