簡述
在軟件開發過程中,經常遇到驗證屬性的合法性.在未使用標籤驗證的情況下,會使用大量的if語句校驗數據的合法性.如
if (StringUtils.isEmpty(user.getUserName())) {
throw new RuntimeException("參數異常");
}
if (StringUtils.isEmpty(user.getEmail())) {
throw new RuntimeException("參數異常");
}
if (!StringUtil.isValid(user.getEmail())) {
throw new RuntimeException("非法的郵件地址");
}
if (user.getAge() < 18 && user.getAge() > 100) {
throw new RuntimeException("非法年齡");
}
if (!"enable".equals(user.getUserStatus())&&!"disable".equals(user.getUserStatus())){
throw new RuntimeException("user_status 值範圍是 enable,disable");
}
這種代碼不僅是比較羅嗦,同時不利於擴展,每次判斷邏輯中都會添加大量的判斷代碼,可讀性比較低下.
爲了解決類似問題,Bean Validation就出現了.
Bean Validation 爲 JavaBean 驗證定義了相應的元數據模型和 API.缺省的元數據是 Java Annotations,通過使用 XML 可以對原有的元數據信息進行覆蓋和擴展.在程序中,通過使用 Bean Validation 或是自己定義的 constraint,例如 @NotNull
, @Max
, @Flag
, 就可以確保數據模型(JavaBean)的合法性.
Bean Validation 是一個運行時的數據驗