欧美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ù)場景中基本業(yè)務(wù)校驗(yàn),但有些特殊場景因業(yè)務(wù)的復(fù)雜性,也還是需要在入口處對(duì)入?yún)⑦M(jìn)行各種角度的校驗(yàn),以求簡化業(yè)務(wù)層的處理,降低業(yè)務(wù)處理復(fù)雜性與方法入口的強(qiáng)約束性。 以上背景,下面就舉個(gè)簡單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 "不是國內(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;
}

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

相關(guān)文章

  • 關(guān)于網(wǎng)頁報(bào)錯(cuò)404原因以及解決方法

    關(guān)于網(wǎng)頁報(bào)錯(cuò)404原因以及解決方法

    404錯(cuò)誤是網(wǎng)站常見的錯(cuò)誤之一,出現(xiàn)的原因很多,解決方法也有很多種,這篇文章主要給大家介紹了關(guān)于網(wǎng)頁報(bào)錯(cuò)404原因以及解決方法的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • springboot中RestTemplate發(fā)送HTTP請求的實(shí)現(xiàn)示例

    springboot中RestTemplate發(fā)送HTTP請求的實(shí)現(xiàn)示例

    RestTemplate是一個(gè) spring-web 提供的執(zhí)行HTTP請求的同步阻塞式工具類,本文就來介紹一下RestTemplate發(fā)送HTTP請求,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • SpringBoot+VUE實(shí)現(xiàn)前后端分離的實(shí)戰(zhàn)記錄

    SpringBoot+VUE實(shí)現(xiàn)前后端分離的實(shí)戰(zhàn)記錄

    這篇文章主要介紹了SpringBoot+VUE實(shí)現(xiàn)前后端分離的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Java語言實(shí)現(xiàn)Blowfish加密算法完整代碼分享

    Java語言實(shí)現(xiàn)Blowfish加密算法完整代碼分享

    這篇文章主要介紹了Java語言實(shí)現(xiàn)Blowfish加密算法完整代碼分享,簡單介紹了blowfish加密算法,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-11-11
  • 30條Java代碼編寫經(jīng)驗(yàn)分享

    30條Java代碼編寫經(jīng)驗(yàn)分享

    你知道寫好Java代碼的30條經(jīng)驗(yàn)是什么嗎?這篇文章主要為大家分享了30條Java代碼編寫經(jīng)驗(yàn)技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • spring獲取bean的源碼解析

    spring獲取bean的源碼解析

    這篇文章主要介紹了spring獲取bean的源碼解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • 使用maven插件對(duì)java工程進(jìn)行打包過程解析

    使用maven插件對(duì)java工程進(jìn)行打包過程解析

    這篇文章主要介紹了使用maven插件對(duì)java工程進(jìn)行打包過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Spring boot2基于Mybatis實(shí)現(xiàn)多表關(guān)聯(lián)查詢

    Spring boot2基于Mybatis實(shí)現(xiàn)多表關(guān)聯(lián)查詢

    這篇文章主要介紹了Spring boot2基于Mybatis實(shí)現(xiàn)多表關(guān)聯(lián)查詢,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java多線程之 FutureTask:帶有返回值的函數(shù)定義和調(diào)用方式

    Java多線程之 FutureTask:帶有返回值的函數(shù)定義和調(diào)用方式

    這篇文章主要介紹了Java多線程之 FutureTask:帶有返回值的函數(shù)定義和調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Pulsar負(fù)載均衡原理及優(yōu)化方案詳解

    Pulsar負(fù)載均衡原理及優(yōu)化方案詳解

    這篇文章主要為大家介紹了Pulsar負(fù)載均衡原理及優(yōu)化方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02

最新評(píng)論