SpringBoot注解@validated实战

@validated说明

@validated是SpringBoot中已经集成好的注解,在SpringBoot项目中直接使用该注解对接口参数进行校验,如果校验不通过会统一抛出异常,需要跟统一异常配套使用(不是必须,但是强烈建议使用,否则抛出莫名其妙的错误信息容易让前端同事乱棍打死)。

配套使用的注解

配套使用的注解用于实体类的属性字段,常用的大概有以下这些。

注解说明
@Null限制只能为null
@NotNull限制必须不为null
@AssertFalse限制必须为false
@AssertTrue限制必须为true
@DecimalMax(value)限制必须为一个不大于指定值的数字
@DecimalMin(value)限制必须为一个不小于指定值的数字
@Digits(integer,fraction)限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
@Future限制必须是一个将来的日期
@Max(value)限制必须为一个不大于指定值的数字
@Min(value)限制必须为一个不小于指定值的数字
@Past限制必须是一个过去的日期
@Pattern(value)限制必须符合指定的正则表达式
@Size(max,min)限制字符长度必须在min到max之间
@Past验证注解的元素值(日期类型)比当前时间早
@NotEmpty验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@NotBlank验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
@Email验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

代码示例

1、先在实体类中把需要验证的属性加上对应的注解,注解中的message是属性验证不通过的报错信息,groups则是自定义的接口分组,具体的使用场景是不同接口可以指定一个group属性来区分不同的校验字段。

// An highlighted block
@Data
@ApiModel("主数据系统-要素传输对象")
@NoArgsConstructor
public class ElementDto implements Serializable {

    @ApiModelProperty("id")
    @NotBlank(message = "id不能为空", groups = {UpdateElement.class})
    private String id;

    @NotBlank(message = "编码不能为空", groups = {AddElement.class, DelElement.class})
    private String code;
    
}

2、@validated启用属性验证。

    @PostMapping(name = "xxx", value = "/element/add")
    @ResponseBody
    public Xxx addElement(@RequestBody @Validated(ElementDto.AddElement.class) ElementDto elementDto) {
        return null;
    }

    @PostMapping(name = "xxx", value = "/element/modify")
    @ResponseBody
    public Xxx modifyElement(@RequestBody @Validated(ElementDto.UpdateElement.class) ElementDto elementDto) {
        return null;
    }

总结

通过这个注解可以减少绝大部分接口参数验证代码,让开发人员更专注的进行业务逻辑开发,之后发现其它的比较高效的注解再分享给大家。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值