一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java Validation Api如何實現自定義注解

Java Validation Api如何實現自定義注解

2020-09-08 00:28果果蟲 Java教程

這篇文章主要介紹了Java Validation Api如何實現自定義注解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

背景

官方提供的注解多數可以解決現實業務場景中基本業務校驗,但有些特殊場景因業務的復雜性,也還是需要在入口處對入參進行各種角度的校驗,以求簡化業務層的處理,降低業務處理復雜性與方法入口的強約束性。 以上背景,下面就舉個簡單Demo進行自定義注解校驗的實現。

注解定義類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
 
/**
 * @author wpp
 * @date 2020/8/22 14:30
 */
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = PhoneCustomizeValidator.class)
public @interface CustomizeValidator {
 
  String message() default "不是國內手機號";
 
  Class<?>[] groups() default {};
 
  Class<? extends Payload>[] payload() default {};
 
}

注解方法處理類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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<CustomizeValidator, String> {
 
  private String phoneRegex = "^(16[0-9]|19[0-9]|13[0-9]|15[012356789]|17[0-9]|18[0-9]|14[0-9])[0-9]{8}$";
  private Pattern phonePattern = Pattern.compile(phoneRegex);
 
  @Override
  public void initialize(CustomizeValidator constraintAnnotation) {
 
  }
 
  @Override
  public boolean isValid(String value, ConstraintValidatorContext context) {
    if (StrUtil.isBlank(value)) {
      return Boolean.FALSE;
    }
    return phonePattern.matcher(value).matches();
  }
}

使用方式

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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;
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/guoguochong/p/13545658.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产99精品| 羞羞漫画视频 | 亚洲国产精品自产在线播放 | 国产精品1区2区 | 女张腿男人桶羞羞漫画 | 2021麻豆剧果冻传媒入口永久 | 91大神在线观看精品一区 | 亚洲男人精品 | 亚洲黄网站wwwwww | 五月婷婷丁香在线视频 | 久99视频精品免费观看福利 | 精品综合一区二区三区 | 女教师巨大乳孔中文字幕免费 | 校花被拖到野外伦小说 | 我的男友是消防员在线观看 | 国产精品午夜国产小视频 | 超碰成人在线播放 | 国产福利一区二区精品视频 | 糖心vlog麻豆精东影业传媒 | 二次元美女互摸隐私互扒 | 久久久久久久国产精品视频 | 色戒完整版2小时38分钟 | 青草青青在线视频 | 免费xxxxx大片在线观看影视 | 久草在线草a免费线看 | 99久久精品久久久久久清纯 | 黑人chinese女人 | 无码中文字幕热热久久 | 国产成人在线小视频 | 91理论片午午伦夜理片久久 | 日本动漫打扑克动画片樱花动漫 | 2022最新国产在线 | a一级毛片录像带 录像片 | 青青草国产精品 | 国产精品3p视频 | 日韩高清无砖砖区2022 | 日日干影院 | 男人香蕉好大好爽视频 | 国产亚洲精品一区久久 | 欧美美女被爆操 | 91普通话国产对白在线 |