hibernate-validator
常用注解
| 注解 | 验证类型 | 说明 | 
|---|---|---|
| @AssertFalse | 布尔类型 | 值是否为false | 
| @AssertTrue | 布尔类型 | 值是否为true | 
| @NotNull | 所有 | 值是否不为null | 
| @Null | 所有 | 值是否为null | 
| @Min | 整型或整型字符串 | 值是否大于等于min的value | 
| @Max | 整型或整型字符串 | 值是否小于等于max的value | 
| @DecimalMin | 整型或整型字符串 | 值是否大于等于decimalMin的value | 
| @DecimalMax | 整型或整型字符串 | 值是否小于等于decimalMax的value | 
| @Digits | 整型或整型字符串 | 验证值的整数位和小数位的上限 | 
| @Size | 字符串、collection、map、数组 | 验证字符串长度、集合大小等是否在指定区间之内 | 
| @Past | 时间日期类型 | 时间是否在过去 | 
| @PastOrPresent | 时间日期类型 | 时间是否在过去或现在 | 
| @Future | 时间日期类型 | 时间是否在未来 | 
| @FutureOrPresent | 时间日期类型 | 时间是否在未来或现在 | 
| @Length | CharSequence子类 | 值的长度是否在指定区间内 | 
| @NotEmpty | CharSequence子类、Collection、Map、数组 | 值不为null且不为空(字符串长度不为0,集合大小不为0) | 
| @NotBlank | 字符类型 | 值不为空(去除首位空格后长度为0) | 
| @Range | 整型或整型字符串 | 值在指定范围之间 | 
| 字符类型 | 值是否为email | |
| @Pattern | 字符类型 | 值是否符合正则 | 
| @Negative | 整型或整型字符串 | 值是否为负数 | 
| @NegativeOrZero | 整型或整型字符串 | 值是否为负数或0 | 
| @Positive | 整型或整型字符串 | 值是否为正数 | 
| @PositiveOrZero | 整型或整型字符串 | 值是否为正数或0 | 
| @Valid | 任何对象类型 | 指定级联验证 | 
| @Constraint | 注解 | 指定自定义注解的校验逻辑 | 
| @Validated | 对象属性或方法对象参数 | 和Valid相同,并可以指定分组查询(spring提供) | 
自定义校验
创建自定义校验注解
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
//指定验证器
@Constraint(validatedBy = DemoValidator.class)
public @interface IsDemo {
    //在违反约束时返回的错误消息
    String message();
    //指定约束所属分组
    Class<?>[] groups() default {};
    //用来定义严重程度
    Class<? extends Payload>[] payload() default {};
}
验证器
/**
* 实现ConstraintValidator
* 泛型一:使用此验证器的注解
* 泛型二:验证类型(多种类型要写多个实现类分别对应类型)
*/
public class DemoValidator implements ConstraintValidator<IsDemo, String> {
    //初始化
    @Override
    public void initialize(IsCron isCron) {
    }
    //验证逻辑
    @Override
    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
        try {
            return CronExpression.isValidExpression(value);
        } catch (Exception e) {
            return false;
        }
    }
}