1.简介
数据校验是任何一个应用程序都会用到的功能,无论是显示层还是持久层. 通常,相同的校验逻辑会分散在各个层中, 这样,不仅浪费了时间还会导致错误的发生(译注: 重复代码). 为了避免重复, 开发人员经常会把这些校验逻辑直接写在领域模型里面, 但是这样又把领域模型代码和校验代码混杂在了一起, 而这些校验逻辑更应该是描述领域模型的元数据.
JSR 303 - Bean Validation规范 - 为Bean验证定义了元数据模型和API. 默认的元数据模型是通过Annotations来描述的,但是也可以使用XML来重载或者扩展. Bean Validation API 并不局限于应用程序的某一层或者哪种编程模型, 例如,如图所示, Bean Validation 可以被用在任何一层, 或者是像类似Swing的富客户端程序中.
2.实现
Hibernate Validator是JSR303的参考实现,本文将使用它来说明JSR303的使用方法。
注:hibernate-validator-4.*为JSR303的最新实现,hibernate-validator-5.*为JSR349 Bean Valildation 1.1的实现。
3.参考资料
JSR303官网 http://jcp.org/en/jsr/detail?id=303
Hibernate Validator官网 http://www.hibernate.org/subprojects/validator.html