Lombok首字母小写,第二个字母大写造成的参数无法接收问题

目录

1.问题现象

2.问题实质

3.问题原因      

4.解决方法


1.问题现象

        如果VO实体用@Data注解生成get/set,对于首字母小写,第二个字母大写的成员变量,@RequestBody无法完成自动映射,取值为null

 

2.问题实质

        Lombook的@Data注解和Spring的Jackson对于get/set的生成方式不同

3.问题原因         

private String xIndex;

        对于这种首字母小写,第二个字母大写的成员变量,Lombook生成的get/set方法如下:

        但Jackson和Idea生成的get/set方法如下:

        因为Lombook和jackson生成set方法的方式不同,造成SpringMVC在映射VO字段时无法找到setxIndex()方法(因为Lombook生成的是setXIndex),故自动映射失败

4.解决方法

        利用Idea生成符合Spring规范的get/set(略low)        

        利用@JsonProperty(value = "xIndex"),强制Jackson在反序列化时给属性重新命名

借鉴博文:Lombok首字母小写,第二个字母大写的问题 - 简书

                 Naming convention for getters/setters in Java - Stack Overflow

                 https://github.com/projectlombok/lombok/issues/757

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lombok并不提供参数校验的功能,但是我们可以结合使用Lombok和Java Bean Validation API来实现参数校验。 Java Bean Validation API提供了一套API,可以在JavaBean中使用注解来进行参数校验。我们可以在Lombok生成的Getter和Setter方法上添加注解,通过使用Java Bean Validation API进行参数校验。 举个例子,我们可以在一个User类的属性上添加注解@NotNull来表示该属性不能为空: ```java import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotNull; @Getter @Setter public class User { @NotNull(message = "用户名不能为空") private String username; private String password; } ``` 接下来,我们可以在调用Setter方法之前对参数进行校验: ```java import javax.validation.Validation; import javax.validation.Validator; import javax.validation.ValidatorFactory; public class UserService { private Validator validator; public UserService() { ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory(); validator = validatorFactory.getValidator(); } public void addUser(User user) { Set<ConstraintViolation<User>> violations = validator.validate(user); if (!violations.isEmpty()) { throw new ConstraintViolationException(violations); } // 添加用户 } } ``` 在上面的代码中,我们首先获取一个Validator对象,然后在添加用户时调用validate方法进行参数校验。如果有校验不通过的情况,我们可以抛出一个ConstraintViolationException异常来提示用户。 需要注意的是,为了使用Java Bean Validation API进行参数校验,我们需要在项目中添加javax.validation:validation-api和Hibernate Validator的依赖。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值