使用 validation 自定义注解

本贴最后更新于 1809 天前,其中的信息可能已经天翻地覆

第一步 在 pom 中引入

 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-validation</artifactId>
      <version>2.1.6.RELEASE</version>
    </dependency>

第二步 创建一个普通的类将至变成注解

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {IsMobileValidator.class})
public @interface IsMobile {
    String message() default "手机号码格式错误";
    Class<?>[] groups() default { };
    Class<? extends Payload>[] payload() default { };
}

步骤就是讲 class 替换成 @interface.然后将其他的复制出来就行,message() default 需要自己写

第三步 创建另一个类继承 ConstraintValidator<> 接口

public class IsMobileValidator implements ConstraintValidator<IsMobile,String> {
    public static final String REGEX_MOBILE = "^((17[0-9])|(14[0-9])|(13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
    @Override
    public void initialize(IsMobile constraintAnnotation) {
    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        try {
            if(StringUtils.isEmpty(value))
            {
                return false;
            }
            return Pattern.matches(REGEX_MOBILE,value);
        } catch (Exception e) {
            return false;
        }

    }
}

在 isValid 下写判断逻辑

最后就可以使用 @isMobile

    @IsMobile
    private String phone;
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 17 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...