校驗、資料繫結和型別轉換

將校驗視為業務邏輯有利有弊,Spring 提供了一種校驗和資料繫結的設計,該設計並不排除其中任何一種。具體來說,校驗不應與 Web 層繫結,應易於本地化,並且應能夠插入任何可用的校驗器。考慮到這些問題,Spring 提供了一個既基本又易於在應用程式的每一層中使用的 Validator 契約。

資料繫結有助於將使用者輸入動態繫結到應用程式的領域模型(或您用於處理使用者輸入的任何物件)。Spring 提供了恰如其名的 DataBinder 來實現此功能。ValidatorDataBinder 構成了 validation 包,該包主要用於但不限於 Web 層。

BeanWrapper 是 Spring Framework 中的一個基本概念,並在許多地方使用。但是,您可能不需要直接使用 BeanWrapper。然而,由於這是參考文件,我們認為有必要進行一些解釋。我們在本章中解釋 BeanWrapper,因為如果您要使用它,很可能是在嘗試將資料繫結到物件時使用。

Spring 的 DataBinder 和較低層的 BeanWrapper 都使用 PropertyEditorSupport 實現來解析和格式化屬性值。PropertyEditorPropertyEditorSupport 型別是 JavaBeans 規範的一部分,本章中也有解釋。Spring 的 core.convert 包提供了一個通用的型別轉換功能,以及一個用於格式化 UI 欄位值的高層 format 包。您可以使用這些包作為 PropertyEditorSupport 實現的更簡單替代方案。本章中也討論了它們。

Spring 透過設定基礎結構和對 Spring 自己的 Validator 契約的介面卡來支援 Java Bean 校驗。應用程式可以在全域性範圍內一次性啟用 Bean 校驗,如Java Bean 校驗中所述,並將其專門用於所有校驗需求。在 Web 層,應用程式可以根據每個 DataBinder 進一步註冊控制器本地的 Spring Validator 例項,如配置 DataBinder中所述,這對於插入自定義校驗邏輯非常有用。