Springboot自定义校验注解

学习笔记

Validator

@Max(10) 最大不能超过10
@Max(value=10,message=”数据最大不能超过10”) 最大不能超过10
@Min()
@Range(min=1,max=10) 范围 1-10
@Length(min=2,max=10)输入的长度 最小为2,最大为10
在这里插入图片描述

需要建一个注解类和关联类
1.@Target(ElementType.TYPE)
表示使用在哪儿,用在哪儿目标上
ElementType.TYPE 表示使用在类上
ElementType.METHOD表示使用在方法上
ElementType.FIELD表示可以使用在字段上
2.@Documented()
表示让注释加入到文档之中
3.@Retention()让注解保留到什么阶段
RetentionPolicy.RUNTIME在运行阶段
4.@Constraint(validatedBy = XXX.class) //关联类

/**
 * @program: missyou
 * @description: 自定义校验注解
 * @author: 
 * @create: 2020-09-19 15:38
 * @Target 表示使用在哪儿,用在哪儿目标上
 * @Documented 让注释加入文档
 * @Retention 这些注解保留到什么阶段
 **/

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE,ElementType.FIELD})
@Constraint(validatedBy = PasswordValidator.class)//关联类
public @interface PasswordEqual {

    int min() default 4;
    int max() default 11;

    String message() default "两次密码不一致";

    //规范模板
    Class<?> [] groups() default {};
    Class<? extends Payload> [] payload() default {};

    //关联类
}

2.关联类
关联类必须要实现
ConstraintValidator<自定义注解类,自定义注解修饰的目标类>

/**
 * @program: missyou
 * @description: 自定义校验密码 关联类
 * @author: 
 * @create: 2020-09-19 15:48
 **/
public class PasswordValidator implements ConstraintValidator<PasswordEqual, PersonDTO> {
        //两个参数
        // 1.自定义注解的类型
        //2.自定义注解修饰的目标的类型,例如:修饰属性,如name,PersonDTO更换String

        private int min;
    private int max;

    @Override
    public void initialize(PasswordEqual constraintAnnotation) {
    	//获取注解中的值
        this.min = constraintAnnotation.min();
        this.max = constraintAnnotation.max();
    }

    @Override
    public boolean isValid(PersonDTO personDTO, ConstraintValidatorContext constraintValidatorContext) {
        String password1 = personDTO.getPassword1();
        String password2 = personDTO.getPassword2();
        boolean match = password1.equals(password2) && password1.length()>min && password1.length() <max;

        return match;
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值