自定义校验注解
⒈编写校验逻辑类
1 package cn.coreqi.security.validator; 2 3 import javax.validation.ConstraintValidator; 4 import javax.validation.ConstraintValidatorContext; 5 6 /** 7 * 第一个泛型是我们自定义验证注解的名称 8 * 第二个泛型是验证字段的类型 9 */ 10 public class MyConstraintValidator implements ConstraintValidator<MyConstraint,String> { 11 /** 12 * 初始化做的一些工作 13 * @param constraintAnnotation 14 */ 15 @Override 16 public void initialize(MyConstraint constraintAnnotation) { 17 System.out.println("My calidator init"); 18 } 19 20 /** 21 * 校验逻辑 22 * @param s 传进来需要校验的值 23 * @param constraintValidatorContext 校验上下文 24 * @return 25 */ 26 @Override 27 public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) { 28 System.out.println(s); 29 return true; 30 } 31 }
⒉自定义校验注解并使用校验逻辑类
1 package cn.coreqi.security.validator; 2 3 import javax.validation.Constraint; 4 import javax.validation.Payload; 5 import java.lang.annotation.ElementType; 6 import java.lang.annotation.Retention; 7 import java.lang.annotation.RetentionPolicy; 8 import java.lang.annotation.Target; 9 10 /** 11 * 自定义一个验证注解 12 * @author fanqi 13 */ 14 @Target({ElementType.METHOD,ElementType.FIELD}) //@Target用于指定注解可以标注在那些元素上 15 @Retention(RetentionPolicy.RUNTIME) //指定当前注解是运行时注解 16 @Constraint(validatedBy = MyConstraintValidator.class) //指定当前注解是一个校验注解,并指定校验逻辑类 17 public @interface MyConstraint { 18 19 /** 20 * 当校验未通过所传递的信息 21 * @return 22 */ 23 String message(); 24 25 Class<?>[] groups() default {}; 26 27 Class<? extends Payload>[] payload() default {}; 28 }
⒊使用(略)