|
对于最新的稳定版本,请使用 Spring Framework 7.0.6! |
校验、数据绑定与类型转换
将验证视为业务逻辑有其优缺点,Spring 提供了一种验证与数据绑定的设计,兼顾了两者的需求。
具体而言,验证不应与 Web 层绑定,应当易于本地化,并且能够集成任何可用的验证器。基于这些考量,
Spring 提供了基础的 Validator 契约,该契约在应用的每一层都极具实用性。
数据绑定对于让用户输入动态绑定到应用程序的领域模型(或你用来处理用户输入的任何对象)很有用。Spring 提供了名为 DataBinder 的功能来完成此操作。Validator 和 DataBinder 组成了 validation 包,该包主要用于但不仅限于 web 层。
BeanWrapper是Spring框架的核心概念,在多个地方使用。然而,您可能不需要直接使用BeanWrapper。但作为参考文档,我们认为有必要进行解释。本章将阐述BeanWrapper的用法,因为如果您需要使用它,最可能出现在将数据绑定到对象的场景中。
Spring的DataBinder和底层BeanWrapper都使用PropertyEditorSupport实现来解析和格式化属性值。PropertyEditor和
PropertyEditorSupport类型属于JavaBeans规范的一部分,本章也将对此进行说明。Spring的core.convert包提供了通用类型
转换机制,以及更高级别的format包用于格式化UI字段值。您可以将这些包作为PropertyEditorSupport实现的
简化替代方案。本章也将讨论这些内容。
Spring 通过设置基础设施和对 Spring 自有 Validator 合同的适配器来支持 Java Bean 验证。应用程序可以如 Java Bean 验证 中所述全局启用 Bean 验证,并将其用于所有验证需求。在 web 层,应用程序可以如 配置 DataBinder 中所述,为每个 DataBinder 注册控制器本地的 Spring Validator 实例,这有助于插入自定义验证逻辑。