最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)自定義枚舉值校驗(yàn)器的示例代碼

 更新時(shí)間:2023年02月22日 11:27:58   作者:小強(qiáng)Zzz  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)自定義枚舉值校驗(yàn)器的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下

前言

定義一個(gè)枚舉類,現(xiàn)需要對傳入的枚舉值進(jìn)行范圍校驗(yàn)。

@Getter
public enum UserTypeEnum {
    STUDENT(“1”, "學(xué)生"),
    TEACHER(“2”, "老師");
 
    private Integer code;
    private String name;
 
    UserTypeEnum(Integer code, String name) {
        this.code = code;
        this.name = name;
    }
}

當(dāng)超出范圍時(shí),報(bào)錯(cuò)。

注解校驗(yàn)

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD})
@Constraint(validatedBy = EnumValidatorHandler.class)
public @interface EnumValidator {
    Class<?> value();
 
    String message() default "入?yún)⒅挡辉谡_枚舉中";
    String method() default "getCode";
    Class<?>[] groups() default {};
 
    Class<? extends Payload>[] payload() default {};
}
@Slf4j
class EnumValidatorHandler implements ConstraintValidator<EnumValidator, Object> {
    private List<Object> values = new ArrayList<>();

    @Override
    public void initialize(EnumValidator enumValidator) {
        Class<?> clazz = enumValidator.value();
        Object[] objects = clazz.getEnumConstants();
        try {
            Method method = clazz.getMethod(enumValidator.method());
            Object value;
            for (Object obj : objects) {
                value = method.invoke(obj);
                values.add(value);
            }
        } catch (Exception e) {
            log.error("處理枚舉校驗(yàn)異常:{}", e);
        }
    }

    @Override
    public boolean isValid(Object value, ConstraintValidatorContext constraintValidatorContext) {
        if (value instanceof String) {
            String valueStr = (String)value;
            return StringUtils.isEmpty(valueStr)|| values.contains(value);
        }
        return Objects.isNull(value) || values.contains(value);
    }
}

使用

在實(shí)體類的屬性上加入注解

@Entity
public class User {
    @EnumValidator(value = UserTypeEnum.class)
    private String userType;
}

在c層入?yún)⒌膮?shù)上加入@Valid注解

public User add(@Valid User user) {
}

如果是其他層的入?yún)⑿r?yàn),需要所在類上加入@Validated注解。

他拋出的異常為ConstraintViolationException,

最后,加入一個(gè)全局異常處理器處理異常。

除了自定義的注解,還有常規(guī)的注解校驗(yàn)器

到此這篇關(guān)于Java實(shí)現(xiàn)自定義枚舉值校驗(yàn)器的示例代碼的文章就介紹到這了,更多相關(guān)Java枚舉值校驗(yàn)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • ElasticSearch自定義注解增刪改方式

    ElasticSearch自定義注解增刪改方式

    這篇文章主要介紹了ElasticSearch自定義注解增刪改方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 記錄一次connection reset 錯(cuò)誤的解決全過程

    記錄一次connection reset 錯(cuò)誤的解決全過程

    這篇文章主要介紹了記錄一次connection reset 錯(cuò)誤的解決全過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • SpringBoot2 實(shí)現(xiàn)JPA分頁和排序分頁的案例

    SpringBoot2 實(shí)現(xiàn)JPA分頁和排序分頁的案例

    這篇文章主要介紹了SpringBoot2 實(shí)現(xiàn)JPA分頁和排序分頁的案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • spring mvc路徑匹配原則詳解

    spring mvc路徑匹配原則詳解

    這篇文章主要介紹了spring mvc路徑匹配原則詳解,小編覺得還是挺不錯(cuò)的,這里分享給大家,需要的朋友可以參考下,下面就和小編一起來看看吧
    2018-02-02
  • Java面試題沖刺第十一天--集合框架篇(2)

    Java面試題沖刺第十一天--集合框架篇(2)

    這篇文章主要為大家分享了最有價(jià)值的兩道集合框架的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Spring通過配置文件和注解實(shí)現(xiàn)屬性賦值

    Spring通過配置文件和注解實(shí)現(xiàn)屬性賦值

    這篇文章主要介紹了Spring通過配置文件和注解實(shí)現(xiàn)屬性賦值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • SpringBoot使用Thymeleaf模板引擎訪問靜態(tài)html的過程

    SpringBoot使用Thymeleaf模板引擎訪問靜態(tài)html的過程

    這篇文章主要介紹了SpringBoot使用Thymeleaf模板引擎訪問靜態(tài)html的過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • HttpClient HttpRoutePlanner接口確定請求目標(biāo)路由

    HttpClient HttpRoutePlanner接口確定請求目標(biāo)路由

    這篇文章主要為大家介紹了使用HttpClient HttpRoutePlanner接口確定請求目標(biāo)路由,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • java實(shí)現(xiàn)上傳圖片進(jìn)行切割的方法

    java實(shí)現(xiàn)上傳圖片進(jìn)行切割的方法

    這篇文章主要介紹了java實(shí)現(xiàn)上傳圖片進(jìn)行切割的方法,以完整實(shí)例形式分析了Java針對上傳圖片進(jìn)行切割的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-02-02
  • JVM:你知道為什么對象一定在堆中分配嗎

    JVM:你知道為什么對象一定在堆中分配嗎

    這篇文章主要介紹了jvm對象的創(chuàng)建和分配的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下,希望能夠給你帶來幫助
    2021-08-08

最新評論

望城县| 久治县| 梁河县| 化州市| 绥江县| 留坝县| 府谷县| 宁波市| 鄂托克旗| 庄河市| 长武县| 烟台市| 尉犁县| 项城市| 南城县| 六枝特区| 镇巴县| 上高县| 汕头市| 兴义市| 嘉义县| 茂名市| 道孚县| 手机| 眉山市| SHOW| 桂东县| 饶阳县| 沧州市| 重庆市| 怀远县| 元朗区| 泰州市| 滁州市| 封丘县| 云梦县| 新乐市| 伊金霍洛旗| 宁城县| 宁夏| 伊川县|