簡體   English   中英

如何在 spring 引導或 java 中為變量驗證創建驗證實用程序

[英]How to create Validation utility for variable validation in spring boot or java

我有一些變量,因為它們的驗證規則可能會在運行時發生變化(從數據庫獲取驗證規則),比如

字符串名稱; 規則:- {Max:10, Min:3, SpacialSymbol:false, AlphaNumeric:ture,...etc}

字符串年齡; 規則: - {max:100,min:19,numeric:true,alphaNumeric:false}

所以根據變量規則可能會在運行時改變......

我想要ValidationUtl.isValid(Object variableValue,Object rules)

在驗證實用程序中

static boolean isValid(){//rule implementation}

我該怎么做? 以通用方式驗證所有規則。 我不想使用 if else 語句。

你聲明一個接口

interface Rule<T> {
    boolean isValid(T obj);
}

然后您可以在Rule實現中封裝各種檢查

class MinLength implements Rule<String> {

    private final int min;

    MinLength(int min) {
        this.min = min;
    }

    @Override
    public boolean isValid(String obj) {
        return obj.length() >= min;
    }
}

class IsAlphaNumeric implements Rule<String> {

    @Override
    public boolean isValid(String obj) {
        return true; //TODO: implement the alpha-numeric check
    }
}

// other rules

您需要做的最后一件事是從您的數據庫中動態獲取規則並將它們與Rule實現鏈接。

public class StringValidator {

    public boolean validate(String string, List<Rule<String>> rules) {
        boolean isValid = true;
        for (Rule<String> rule : rules) {
            if (rule.isValid(string)) {
                isValid = false;
                break;
            }
        }
        return isValid;
    }

    public static void main(String[] args) {
        List<Rule<String>> rules = Arrays.asList(new MinLength(10), new IsAlphaNumeric()); //obtain from Database
        boolean isValid = new StringValidator().validate("blablabla", rules);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM