自定义校验注解

⒈编写校验逻辑类

 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 }

⒊使用(略)

posted @ 2019-03-26 22:50  SpringCore  阅读(1283)  评论(0编辑  收藏  举报