lombok使用@Data注解下的不标准驼峰导致参数获取不到的问题及解决

lombok的便捷性

在springboot的开发中,lombok是一个非常好用、智能的插件,只要装了lombok的插件/依赖,就能用注解的方式帮你完成get、set、toString等方法的编写。
比如用以下方式引入lombok的依赖:

    
        org.projectlombok
        lombok
        1.18.0
    

使用@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。
贴两张图看看效果:
lombok使用@Data注解下的不标准驼峰导致参数获取不到的问题及解决_第1张图片

使@JsonProperty完美解决

JsonProperty的作用是:把属性的名称序列化为另一个名称,比如把myBeautifulGirl叫做girl
lombok使用@Data注解下的不标准驼峰导致参数获取不到的问题及解决_第2张图片
这个注解可以重新定义前端传入的参数名,也可以重新定义后端返回给前端的参数名。

@JsonProperty新定义前端传入的参数名样例:

lombok使用@Data注解下的不标准驼峰导致参数获取不到的问题及解决_第3张图片

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

lombok使用@Data注解下的不标准驼峰导致参数获取不到的问题及解决_第4张图片
如图所示,返回值里的参数名确实是@JsonProperties里定义的,但是却发现了一个多余的属性,太奇怪了(说多了都是泪,为什么我要用这么不规范的参数名)。

最规矩的处理方法:重写get\set方法:

估计是@Data这注解里自己实现的get、set不满足我的规范,那我自己重写一下吧,终于能行了:
lombok使用@Data注解下的不标准驼峰导致参数获取不到的问题及解决_第5张图片

最最规矩的处理方法:参数名规规矩矩,满足驼峰的要求!
@JsonProperty里看来也有坑,改天再研究下,先下班。

你可能感兴趣的:(java后端,java)