@Validated注解对应类型(一)
背景
今天在entity的属性上,添加@NotEmpty属性的时候失败了。
@NotEmpty这个很好理解,就是非空校验。
查看了下,发现说是因为字段类型是Integer,不支持。
但是这玩意放在属性上面,在运行时才去检查当前类型。
这也确实有点扯蛋了。
所以就弄点时间简单看下。
@Validated简介
@Validated是Spring Validator校验机制使用的。
作用域一般就是解放我们原来对入参的校验操作,免得我们在代码里面写
所以就花点时间,把源码都看了下,发现还是比较全,都写在一个包里。
注解说明
@AssertFalse: false断言
注解元素必须为false。
支持boolean和Boolean。接受null值
@Constraint(validatedBy = { })public @interface AssertFalse {String message() default "{javax.validation.constraints.AssertFalse.message}";Class[] groups() default { };Class[] payload() default { };
@AssertTrue:true断言
注解元素必须为true。
支持boolean和Boolean。接受null值
@Constraint(validatedBy = { })public @interface AssertTrue {String message() default "{javax.validation.constraints.AssertTrue.message}";Class[] groups() default { };Class[] payload() default { };
@DecimaMax:最大数值
@Constraint(validatedBy = { })public @interface DecimalMax {String message() default "{javax.validation.constraints.DecimalMax.message}";Class[] groups() default { };Class[] payload() default { };
元素必须是一个数值,其值必须小于或等于指定的最大值
支持以下类型值:
BigDecimal
BigInteger
CharSequence
byte, short, int, long以及对应的包装类型
注意,由于可能存在舍入错误问题,double和float不受支持
@DecimalMin:最小数值验证
和@DecimalMax相反,不多做解释。
@Digits :数字格式
主要用于数字格式进度判断,例如金额
元素必须是一个数值,其值必须是一个可接受范围内的数字
支持以下类型值:
BigDecimal
BigInteger
CharSequence
byte, short, int, long以及对应的包装类型
@Constraint(validatedBy = { })public @interface Digits {String message() default "{javax.validation.constraints.Digits.message}";Class[] groups() default { };Class[] payload() default { };/** * @return maximum number of integral digits accepted for this number */int integer();/** * @return maximum number of fractional digits accepted for this number */int fraction();
使用格式:@Digits(integer=,fraction=)
integer:最大整数位数 fractional:最大小数位数
@Email:邮件格式
邮件格式校验。
字符串必须是格式正确的电子邮件地。接受CharSequence类型
public @interface Email {String message() default "{javax.validation.constraints.Email.message}";Class[] groups() default { };Class[] payload() default { };/** * @return an additional regular expression the annotated element must match. The default * is any string ('.*') */String regexp() default ".*";/** * @return used in combination with {@link #regexp()} in order to specify a regular * expression option */Pattern.Flag[] flags() default { };
@Future
检查注释日期是否大于当前时间
public @interface Future {String message() default "{javax.validation.constraints.Future.message}";Class[] groups() default { };Class[] payload() default { };
支持以下类型
java.util.Date
java.util.Calendar
java.time.Instant
java.time.LocalDate
java.time.LocalDateTime
java.time.LocalTime
java.time.MonthDay
java.time.OffsetDateTime
java.time.OffsetTime
java.time.Year
java.time.YearMonth
java.time.ZonedDateTime
java.time.chrono.HijrahDate
java.time.chrono.JapaneseDate
java.time.chrono.MinguoDate
java.time.chrono.ThaiBuddhistDate
@FutureOrPresent
注释日期是否大于等于当前时间。和上面类似。
@Max
值是否小于等于指定值
@Constraint(validatedBy = { })public @interface Max {String message() default "{javax.validation.constraints.Max.message}";Class[] groups() default { };Class[] payload() default { };...
支持类型:
BigDecimal
BigInteger
byte, short, int, long,和原始类型的相应包装类型
@Min
和上面的@Max相反