欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java Validation Api如何實(shí)現(xiàn)自定義注解

 更新時(shí)間:2020年09月07日 11:20:45   作者:果果蟲  
這篇文章主要介紹了Java Validation Api如何實(shí)現(xiàn)自定義注解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

背景

官方提供的注解多數(shù)可以解決現(xiàn)實(shí)業(yè)務(wù)場(chǎng)景中基本業(yè)務(wù)校驗(yàn),但有些特殊場(chǎng)景因業(yè)務(wù)的復(fù)雜性,也還是需要在入口處對(duì)入?yún)⑦M(jìn)行各種角度的校驗(yàn),以求簡(jiǎn)化業(yè)務(wù)層的處理,降低業(yè)務(wù)處理復(fù)雜性與方法入口的強(qiáng)約束性。 以上背景,下面就舉個(gè)簡(jiǎn)單Demo進(jìn)行自定義注解校驗(yàn)的實(shí)現(xiàn)。

注解定義類

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 "不是國(guó)內(nèi)手機(jī)號(hào)";

  Class<?>[] groups() default {};

  Class<? extends Payload>[] payload() default {};

}

注解方法處理類

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();
  }
}

使用方式

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 = "手機(jī)號(hào)碼")
  @Length(max = 13)
  private String phone;
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Springboot整合redis實(shí)現(xiàn)發(fā)布訂閱功能介紹步驟

    Springboot整合redis實(shí)現(xiàn)發(fā)布訂閱功能介紹步驟

    發(fā)布訂閱作為一種設(shè)計(jì)思想在很多開源組件中都有體現(xiàn),比如大家熟知的消息中間件等,可謂把發(fā)布訂閱這一思想體現(xiàn)的淋漓盡致了
    2022-09-09
  • java連接mysql數(shù)據(jù)庫詳細(xì)步驟解析

    java連接mysql數(shù)據(jù)庫詳細(xì)步驟解析

    以下是對(duì)java連接mysql數(shù)據(jù)庫的具體詳細(xì)步驟進(jìn)行了分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • IDEA搭建dubbo項(xiàng)目的過程及存在的問題

    IDEA搭建dubbo項(xiàng)目的過程及存在的問題

    這篇文章主要介紹了IDEA搭建dubbo項(xiàng)目及存在的問題小結(jié),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java?EasyExcel導(dǎo)入帶圖片的完整過程記錄

    Java?EasyExcel導(dǎo)入帶圖片的完整過程記錄

    這篇文章主要介紹了關(guān)于結(jié)合EasyExcel和ApachePOI來實(shí)現(xiàn)Excel數(shù)據(jù)批量導(dǎo)入并讀取圖片的過程,文中通過圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • java自定義jar包讓jmeter使用的方法

    java自定義jar包讓jmeter使用的方法

    在本篇文章里小編給大家整理了一篇關(guān)于java自定義jar包讓jmeter使用的方法以及實(shí)例代碼,需要的朋友們參考下。
    2019-10-10
  • springboot基于docsify?實(shí)現(xiàn)隨身文檔

    springboot基于docsify?實(shí)現(xiàn)隨身文檔

    這篇文章主要介紹了springboot基于docsify實(shí)現(xiàn)隨身文檔的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 淺談一下Java中的ReentrantLock

    淺談一下Java中的ReentrantLock

    這篇文章主要介紹了淺談一下Java中的ReentrantLock,這個(gè)類是JUC工具包中對(duì)線程安全問題提供的一種解決方案,它主要是用來給對(duì)象上鎖,保證同一時(shí)間這能有一個(gè)線程在訪問當(dāng)前對(duì)象,需要的朋友可以參考下
    2023-09-09
  • Java虛擬機(jī)JVM類加載機(jī)制(從類文件到虛擬機(jī))

    Java虛擬機(jī)JVM類加載機(jī)制(從類文件到虛擬機(jī))

    所謂的類加載機(jī)制就是虛擬機(jī)將class文件加載到內(nèi)存,并對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證,轉(zhuǎn)換解析和初始化,形成虛擬機(jī)可以直接使用的java類型,本文給大家介紹類加載機(jī)制過程從類文件到虛擬機(jī)的詳細(xì)說明,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • 基于@LastModifiedDate不起作用的解決方案

    基于@LastModifiedDate不起作用的解決方案

    這篇文章主要介紹了基于@LastModifiedDate不起作用的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Java參數(shù)傳遞及值傳遞實(shí)現(xiàn)原理詳解

    Java參數(shù)傳遞及值傳遞實(shí)現(xiàn)原理詳解

    這篇文章主要介紹了Java參數(shù)傳遞及值傳遞實(shí)現(xiàn)原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08

最新評(píng)論