Java Validation Api (自定义篇)
2021-04-01 03:27
标签:ati time line 手机号 target agg 入口 port const Java Validation Api (自定义篇) 标签:ati time line 手机号 target agg 入口 port const 原文地址:https://www.cnblogs.com/guoguochong/p/13545658.html背景
官方提供的注解多数可以解决现实业务场景中基本业务校验,但有些特殊场景因业务的复杂性,也还是需要在入口处对入参进行各种角度的校验,以求简化业务层的处理,降低业务处理复杂性与方法入口的强约束性。 以上背景,下面就举个简单Demo进行自定义注解校验的实现。
注解定义类
1 import javax.validation.Constraint;
2 import javax.validation.Payload;
3 import java.lang.annotation.ElementType;
4 import java.lang.annotation.Retention;
5 import java.lang.annotation.RetentionPolicy;
6 import java.lang.annotation.Target;
7
8 /**
9 * @author wpp
10 * @date 2020/8/22 14:30
11 */
12 @Target({ElementType.FIELD, ElementType.METHOD})
13 @Retention(RetentionPolicy.RUNTIME)
14 @Constraint(validatedBy = PhoneCustomizeValidator.class)
15 public @interface CustomizeValidator {
16
17 String message() default "不是国内手机号";
18
19 Class>[] groups() default {};
20
21 Class extends Payload>[] payload() default {};
22
23 }
注解方法处理类
import cn.hutool.core.util.StrUtil;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.regex.Pattern;
/**
* @author wpp
* @date 2020/8/22 14:33
*/
public class PhoneCustomizeValidator implements ConstraintValidator
使用方式
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
/**
* @author wpp
* @date 2020/8/22 14:49
*/
@Data
@Builder
public class CustomizeDTO {
@ApiModelProperty(name = "phone", value = "手机号码")
@Length(max = 13)
private String phone;
}
文章标题:Java Validation Api (自定义篇)
文章链接:http://soscw.com/index.php/essay/70752.html