@Builder注释导致@RequestBody的前端json反序列化失败,HTTP400

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

项目里发生了一个bug,就是前端请求一个接口时候,报了HTTP 400 Bad Request

通常来说这个问题是前后端的参数没对齐,比如前端传了个String,但后端对应的是Integer。

所以我就排查了半天,结果没发现啥错误,有点懵。

最后发现问题出在Controller层里,@RequestBody SubmitParam。

而SubmitParam中的某一个参数,我给加上了@Data和@Builder,注释,这个@Builder注释可好,直接给我干400了,其实去掉@Builder或者加上@AllArgsConstructor和@NoArgsConstructor都可以解决这个问题。

这是为什么呢,因为@Builder算是Lombok里很常用的注释了,可以简化我们构建对象,避免大量set的语句。当你在一个类上使用@Builder注解时,Lombok会自动生成一个静态内部类Builder,将目标类的参数都复制到Builder类里,用于创建该类的实例,提供一种流畅的链式方式来构建对象。

举个例子

import lombok.Builder;

@Builder
public class Person {
    private String name;
    private int age;
    private String address;
}

// 在其他地方的代码中
Person person = Person.builder()
                      .name("John")
                      .age(30)
                      .address("123 Main St")
                      .build();

坑就在@Builder注释在目标类中创建一个私有构造函数,参数为 Builder类型。在Builder类中提供设置各个参数的方法,并返回当前对象。最后在 Builder类中提供一个 build方法,用来创建目标类的实例,并将各个参数赋值给目标类。</

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值