Springboot之自定义校验注解
2020-12-25 03:27
标签:多个 第一个 一个 xtend 接口 sage res struct 上下文环境 在日常代码开发中,我们需要对实体类中的各个属性进行校验,比如非空判断、url 判断等等,在 javax.validation.constraints.* 包下面集成了多个校验注解。但是随着业务的发展,我们需要自定义一些特殊的注解,比如,针对一些标志位,我们必须保证其 数值只是 Integer类型的 0 或者 1,这时需要我们自定义注解来进行实现。 关于自定义注解,主要分为以下三步:1)自定义校验注解 2)自定义校验器 3)关联自定义的校验注解和校验注解器 其中,需要指定 message信息,参考源码,在 resources 下面新建一个 ValidationMessages.properties 文件,其中指定com.demrystv.common.valid.ListValue.message=必须提交指定的值 关联自定义的校验器和自定义的校验注解,自定义注解可以适配多个校验器,必须现在是校验 integer,以后是 double,只需要再编写一个校验器,在自定义校验注解的 @Constraint中进行指定即可; 两者的关联主要是 在 自定义注解的 @Constraint(validatedBy = { ListValConstraintValidator.class 【在这指定多个校验器】}) 进行关联 Springboot之自定义校验注解 标签:多个 第一个 一个 xtend 接口 sage res struct 上下文环境 原文地址:https://www.cnblogs.com/Demrystv/p/13178224.html 1) 自定义校验注解
package com.demrystv.common.valid;
import javax.validation.Constraint;
import javax.validation.Payload;
import javax.validation.constraints.NotBlank;
import java.lang.annotation.Documented;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Documented
// 标明这个校验注解是使用哪个校验器进行校验的,在这里指定或者在初始化的时候指定
@Constraint(validatedBy = { ListValConstraintValidator.class})
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) // 作用位置
@Retention(RUNTIME) // 运行时机
public @interface ListValue {
//在 jsr303 中一个注解必须有下面三个属性
String message() default "{com.demrystv.common.valid.ListValue.message}";
Class>[] groups() default { };
Class extends Payload>[] payload() default { };
int[] vals() default { };
}
2)自定义校验器
1 package com.demrystv.common.valid;
2
3 import javax.validation.ConstraintValidator;
4 import javax.validation.ConstraintValidatorContext;
5 import java.util.HashSet;
6 import java.util.Set;
7
8 /**
9 *
10 * 自定义校验器
11 * 首先必须实现 ConstraintValidator 接口, 其中第一个参数是 自定义校验注解,第二个参数是校验的类型
12 */
13 public class ListValConstraintValidator implements ConstraintValidator
3)关联自定义的校验注解和校验注解器
文章标题:Springboot之自定义校验注解
文章链接:http://soscw.com/index.php/essay/38062.html