首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

Java EE 6 核心特性:Bean Validation 規範導論與入門範例(第 1 部分)

     編輯:J2EE

Bean Validation 規範概覽

Java EE 6 引入 Bean Validation (JSR 303),以註解方式對 Java Bean 進行約束驗證,不限層次、不限編程模型,靈活易用。核心目標:消除表現層、業務層、持久層重複編寫相同驗證邏輯的痛點,將驗證規則直接聲明於領域模型本身,實現「驗證邏輯與業務代碼分離、跨層復用」。

架構願景:從分層重複到模型內聚

Java 分層驗證結構示意圖

傳統架構中,同一 Java Bean 在 Controller、Service、DAO 各層皆需驗證,極易導致不一致與維護地獄。

Java Bean 驗證模型示意圖

Bean Validation 以註解覆蓋 XML 描述符,將驗證規則內聚於 Bean 定義,API 為通用 Java Bean 模型擴展,服務端與客戶端均可使用,最大特點:易用、靈活、標準化。

參考實現:Hibernate Validator 4.0(本系列所有範例均基於此)。

五分鐘入門範例

public class Employee {
    @NotNull(message = "The id of employee can not be null")
    private Integer id;

    @NotNull(message = "The name of employee can not be null")
    @Size(min = 1, max = 10, message = "The size of employee's name must between 1 and 10")
    private String name;
    // getter/setter 省略

    public static void main(String[] args) {
        Employee emp = new Employee();
        emp.setName("Zhang Guan Nan"); // 故意超長
        ValidatorFactory vf = Validation.buildDefaultValidatorFactory();
        Validator validator = vf.getValidator();
        Set<ConstraintViolation<Employee>> violations = validator.validate(emp);
        for (ConstraintViolation<Employee> v : violations) {
            System.out.println(v.getMessage());
        }
    }
}

運行輸出

The size of employee's name must between 1 and 10
The id of employee can not be null

註解 @NotNull、@Size 聲明約束,驗證器自動檢查實例狀態並輸出違規訊息。

完整驗證流程四步驟

  1. 約束註解定義:聲明語義與屬性(本文第 2 部分詳細)。
  2. 約束驗證規則實現:編寫 ConstraintValidator 邏輯(第 2 部分)。
  3. 約束註解聲明:在 Bean 屬性/方法/類型上標註(第 3 部分)。
  4. 約束驗證流程執行:啟動 Validator 執行驗證(第 3 部分)。

後續章節將逐層展開,構建完整知識體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved