关注wx:CodingTechWork,一起学习进步。
引言
在java开发中,经常需要和外界系统进行参数对接,api设计中难免会遇到json传参不一致的情况,虽然纸面或者接口规范约束了应该怎么传参,仍然不可避免在对接过程中,出现传参不符合要求的,如传空值、传超过范围的值等。除了在Controllers层面使用@Validated或者@Valid注解外,本文将总结使用javax.validation.*;下的包进行校验的模板和常用的注解含义。
常用注解
注解
类型
说明
@NotNull
任意类型
验证注解的元素值不是null,但可以为empty
@NotEmpty
CharSequence子类型(如String、StringBuilder、StringBuffer、CharBuffer)、Collection、Map、数组
验证注解的元素值不为null且size>0
@NotBlank
只能作用于字符串
验证注解的元素值不是null,且不能为空白空字符,如" ", 即该字符串调用trim()后,长度需大于0,才能验证通过
@Null
任意类型
验证注解的元素值是null
@Min(value=值)
BigDecimal,BigInteger, byte,short, int, long,等任何Number或CharSequence(存储的是数字)子类型
验证注解的元素值大于等于指定的value值
@Max(value=值)
BigDecimal,BigInteger, byte,short, int, long,等任何Number或CharSequence(存储的是数字)子类型
验证注解的元素值小于等于指定的value值
@Size(min=下限, max=上限)
字符串、Collection、Map、数组等
验证注解的元素值的在min和max(包含)指定区间之内,如字符长度、集合大小
@Range(min=最小值, max=最大值)
BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子类型和包装类型
验证注解的元素值在最小值和最大值之间
@Length(min=下限, max=上限)
CharSequence子类型
验证注解的元素值长度在min和max区间内
@DecimalMin
这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度
验证注解的值不小于约束中指定的最小值
@DecimalMax(value=值)
这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度
验证注解的值不大于约束中指定的最大值
@Digits(integer=整数位数, fraction=小数位数)
BigDecimal,BigInteger, byte,short, int, long,等任何Number或CharSequence(存储的是数字)子类型
integer为整数个数最大值,fraction为小数个数最大值
@AssertTrue
布