对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-doc.cadn.net.cn

校验、数据绑定与类型转换

将验证视为业务逻辑有其优缺点,Spring 提供了一种验证与数据绑定的设计,兼顾了两者的需求。 具体而言,验证不应与 Web 层绑定,应当易于本地化,并且能够集成任何可用的验证器。基于这些考量, Spring 提供了基础的 Validator 契约,该契约在应用的每一层都极具实用性。spring-doc.cadn.net.cn

数据绑定对于让用户输入动态绑定到应用程序的领域模型(或你用来处理用户输入的任何对象)很有用。Spring 提供了名为 DataBinder 的功能来完成此操作。ValidatorDataBinder 组成了 validation 包,该包主要用于但不仅限于 web 层。spring-doc.cadn.net.cn

BeanWrapper是Spring框架的核心概念,在多个地方使用。然而,您可能不需要直接使用BeanWrapper。但作为参考文档,我们认为有必要进行解释。本章将阐述BeanWrapper的用法,因为如果您需要使用它,最可能出现在将数据绑定到对象的场景中。spring-doc.cadn.net.cn

Spring的DataBinder和底层BeanWrapper都使用PropertyEditorSupport实现来解析和格式化属性值。PropertyEditorPropertyEditorSupport类型属于JavaBeans规范的一部分,本章也将对此进行说明。Spring的core.convert包提供了通用类型 转换机制,以及更高级别的format包用于格式化UI字段值。您可以将这些包作为PropertyEditorSupport实现的 简化替代方案。本章也将讨论这些内容。spring-doc.cadn.net.cn

Spring 通过设置基础设施和对 Spring 自有 Validator 合同的适配器来支持 Java Bean 验证。应用程序可以如 Java Bean 验证 中所述全局启用 Bean 验证,并将其用于所有验证需求。在 web 层,应用程序可以如 配置 DataBinder 中所述,为每个 DataBinder 注册控制器本地的 Spring Validator 实例,这有助于插入自定义验证逻辑。spring-doc.cadn.net.cn