驗證、資料繫結和類型轉換

將驗證視為業務邏輯有利有弊,而 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中所述,這對於外掛自訂驗證邏輯可能很有用。