lombok的便捷性
在springboot的开发中,lombok是一个非常好用、智能的插件,只要装了lombok的插件/依赖,就能用注解的方式帮你完成get、set、toString等方法的编写。
比如用以下方式引入lombok的依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.0</version>
</dependency>
使用@Data注解遇到的诡异问题
本次我遇到一个很诡异的问题,使用lombok的@Data注解时,由于命名不标准,导致springboot不认识我的参数了,上代码:
实体类:
package hm.entity;
import lombok.Data;
@Data
public class ReqTest {
//创建人guid
String createByGuid;
//申请理由
String applyMessage;
//工单类型
Integer orderType;
//流程模板id
Integer SProcedureTypeId;
}
接口里使用实体类:
@RestController
@RequestMapping("/demo1")
public class Demo1 {
@RequestMapping("/save")
public String save(@RequestBody ReqTest reqTest){
System.out.println("收到的参数是:" + reqTest.toString());
return "";
}
}
我的请求参数:
{
"createByGuid":"060905223",
"applyMessage":"请给我100块",
"orderType":2,
"SProcedureTypeId":3
}
控制台打印:
收到的参数是:ReqTest(createByGuid=060905223, applyMessage=请给我100块, orderType=2, SProcedureTypeId=null)
奇怪,为什么最后一个参数收不到呢,怀疑是不标准的驼峰导致的问题,于是乎我又把实体类和请求值都改成了小写开头的:sProcedureTypeId,然鹅控制台打印的依然是null。
贴两张图看看效果:

使@JsonProperty完美解决
JsonProperty的作用是:把属性的名称序列化为另一个名称,比如把myBeautifulGirl叫做girl

这个注解可以重新定义前端传入的参数名,也可以重新定义后端返回给前端的参数名。
@JsonProperty新定义前端传入的参数名样例:

@JsonProperty新定义后端返回的参数名样例:

如图所示,返回值里的参数名确实是@JsonProperties里定义的,但是却发现了一个多余的属性,太奇怪了(说多了都是泪,为什么我要用这么不规范的参数名)。
最规矩的处理方法:重写get\set方法:
估计是@Data这注解里自己实现的get、set不满足我的规范,那我自己重写一下吧,终于能行了:

在SpringBoot开发中,Lombok的@Data注解简化了getter、setter等方法的编写。然而,当实体类参数命名不遵循标准驼峰命名时,可能导致参数无法正确获取。通过使用@JsonProperty注解,可以重新定义参数名,解决这个问题。但最稳妥的方法是直接遵守驼峰命名规则,或者重写get、set方法。
1万+





