5.1 简介
JSR-303/JSR-349 Bean Validation
Spring 4.0 默认即支持Bean Validation 1.0 (JSR-303)和 Bean Validation 1.1(JSR-349)校验规范, 同时也能适配Spring的Validator
校验接口。
应用既可以像Section 5.8, “Spring Validation”所述一次性开启全局的Bean Validation,也可以在你 需要验证的地方一一开启。
应用可以像Section 5.8.3, “Configuring a DataBinder”所述在每个DataBinder
实例中注册多个自定义的Spring Validator
实例,这对那些不愿意使用注解来实现插件式的校验逻辑来说非常有用。
在业务逻辑中考虑数据校验利弊参半,Spring 提供的校验(和数据绑定)方案也未能解决这个问题。 能明确的是数据校验不应该被限定在web层使用,它应该能很方便的执行本地化,并且能在任何需要 数据校验的场合以插件的形式提供服务。基于以上考虑,Spring 设计了一个既基本又方便使用且能 在所有层使用的Validator
接口。
Spring 提供了我们称作DataBinder
的对象来处理数据绑定,所谓的数据绑定就是将用户的输入 自动的绑定到我们的领域模型(或者说用来处理用户所输入的对象)。Spring 的Validator
和 DataBinder
构成了validation
包,这个包主要被Spring MVC框架使用,但绝不限于在该框架使用。
在Spring中BeanWrapper
是一个很基本的概念,在很多地方都有使用到它。但是,你可能从来都没有 直接使用到它。鉴于这是一份参考文档,我们认为很有必要对BeanWrapper
进行必要的解释。在这一 章中我们将解释BeanWrapper
,在你尝试将数据绑定到对象时一定会使用到它。
Spring的数据绑定和较低级别的BeanWrapper都会使用PropertyEditors来进行转换和格式化。PropertyEditor
是JavaBeans规范的一部分,在这一章中我们将进行探讨。Spring3引入了"core.convert"这个包来提供通用 的类型转换工具和高级"format"包来格式化UI显示;这两个包提供的工具可以用作PropertyEditors 的替代品,我们也将在这一章对它们展开讨论。