数据校验是任何一个应用程序都会用到的功能,无论是显示层还是持久层. 通常,相同的校验逻辑会分散在各个层中,
这样,不仅浪费了时间还会导致错误的发生。 为了避免重复, 开发人员经常会把这些校验逻辑直接写在领域模型里面,
但是这样又把领域模型代码和校验代码混杂在了一起, 而这些校验逻辑更应该是描述领域模型的元数据。
JSR 303 - Bean
Validation - 为实体验证定义了元数据模型和API.
默认的元数据模型是通过Annotations来描述的,但是也可以使用XML来重载或者扩展. Bean Validation API
并不局限于应用程序的某一层或者哪种编程模型, 例如,如图所示, Bean Validation 可以被用在任何一层,
或者是像类似Swing的富客户端程序中。
下面是一个非常简单的例子:
-
import
java.util.Set;
-
-
import
javax.validation.ConstraintViolation;
-
import
javax.validation.Validation;
-
import
javax.validation.Validator;
-
import
javax.validation.ValidatorFactory;
-
import
javax.validation.constraints.Max;
-
import
javax.validation.constraints.Min;
-
import
javax.validation.constraints.NotNull;
-
import
javax.validation.constraints.Size;
-
-
-
-
-
-
-
-
-
-
-
public
class
User {
-
@Min
(
1
)
-
private
int
userId;
-
@NotNull
(message =
"用户名不能为空!"
)
-
@Size
(min=
1
,message =
"用户名不能为空!"
)
-
private
String userName;
-
@NotNull
-
@Size
(min =
6
, max =
20
, message =
"密码长度必须在6-20之间!"
)
-
private
String userPwd;
-
@Min
(value =
18
, message =
"年龄最小值必须是18"
)
-
@Max
(value =
60
, message =
"年龄最大值必须是60"
)
-
private
int
userAge;
-
-
public
User() {
-
}
-
-
public
User(
int
userId, String userName, String userPwd,
int
userAge) {
-
this
.userId = userId;
-
this
.userName = userName;
-
this
.userPwd = userPwd;
-
this
.userAge = userAge;
-
}
-
-
public
int
getUserId() {
-
return
userId;
-
}
-
-
public
void
setUserId(
int
userId) {
-
this
.userId = userId;
-
}
-
-
public
String getUserName() {
-
return
userName;
-
}
-
-
public
void
setUserName(String userName) {
-
this
.userName = userName;
-
}
-
-
public
String getUserPwd() {
-
return
userPwd;
-
}
-
-
public
void
setUserPwd(String userPwd) {
-
this
.userPwd = userPwd;
-
}
-
-
public
int
getUserAge() {
-
return
userAge;
-
}
-
-
public
void
setUserAge(
int
userAge) {
-
this
.userAge = userAge;
-
}
-
-
public
static
void
main(String[] args) {
-
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
-
Validator validator = factory.getValidator();
-
User user = new
User(
1
,
"tanlan"
,
"123"
,
10
);
-
Set<ConstraintViolation<User>> constraintViolations = validator
-
.validate(user);
-
-
for
(ConstraintViolation<User> constraintViolation : constraintViolations) {
-
System.out.println(constraintViolation.getMessage());
-
}
-
}
-
}
需要用到的包:
hibernate-validator-4.2.0.Final.jar
validation-api-1.0.0.GA.jar
slf4j-api-1.6.1.jar
上面的代码运行后的结果是:
密码长度必须在6-20之间!
年龄最小值必须是18
下一步要学习一下这种验证如何应用到多层Web应用程序中。
分享到:
相关推荐
《Bean Validation规范详解》 Bean Validation是Java平台上用于对象验证的一种标准,旨在提供一种简单而强大的方式来确保Java Bean对象的正确性和完整性。本规范文档深入解析了Bean Validation的各个方面,包括其...
Bean Validation是Java世界中一种强大的数据验证框架,它允许开发者在模型对象(Bean)上定义约束,以便在运行时进行验证。这个框架的核心是JSR 303和JSR 349标准,它提供了统一的方式来处理业务逻辑中的数据验证,...
**Bean Validation 技术规范特性概述** Bean Validation 是Java平台上的一个标准,它定义了一种在应用程序中验证对象属性的方法。这项技术的核心是提供了一种声明式的方式,使得开发者可以在不编写大量验证代码的...
BeanValidation(jar,英文手册,中文手册)合集BeanValidation(jar,英文手册,中文手册)合集.rarBeanValidation(jar,英文手册,中文手册)合集.rarBeanValidation(jar,英文手册,中文手册)合集.rarBeanValidation(jar,英文...
### Bean Validation (JSR 303) 中文参考手册概览 《Bean+Validation中文参考手册》是一份详尽的指南,旨在介绍Java EE 6中Bean Validation规范(JSR 303)的核心概念、用法及其实现细节。Bean Validation是一个...
Bean Validation是Java世界中一种强大的数据验证框架,它允许开发者定义和执行针对对象属性的验证规则,极大地提高了代码的可维护性和用户体验。本篇文章将深入探讨Bean Validation技术,以及如何利用它来对Javabean...
Bean Validation 规范对 Java Bean 的验证流程如下:在实际使用中调用 Validator.validate(JavaBeanInstance) 方法后,Bean Validation 会查找在 JavaBeanInstance上所有的约束声明,对每一个约束调用对应的约束验证...
### Java EE 6 Bean Validation:实体验证元数据模型与API #### 概述 Java EE 6中的Bean Validation(JSR 303)作为一项核心功能,为开发者提供了一个强大的实体验证框架。该框架定义了一种元数据模型以及一个API...
《Mybatis JSR303 Bean Validation 插件详解》 在Java开发中,数据验证是必不可少的一个环节,它能够确保输入的数据符合预期的格式和规则,从而避免因数据异常导致的程序错误。Mybatis,作为一款轻量级的持久层框架...
官方版本,亲测可用
官方版本,亲测可用
本教程翻译自Hibernate Validator 4.0 GA指南,并参考JSR 303的规范,本着尽量不用JSR规范之外的特性,文档在编写时尽量不提及底层实现Hibernate Validator,而是关注Bean Validation规范本身。如果有不对之处,请...
在Java开发中,Bean Validation是用于验证对象属性的框架,它提供了一种标准的方式来约束和验证Java类的字段。Bean Validation允许开发者定义一组规则,这些规则会在数据绑定到对象时自动执行,确保输入数据的正确性...
JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,现在一共有两个规范:BeanValidation1.0(即JSR303)和BeanValidation1.1(即JSR349),主要用于对数据进行校验,确保输入进来的数据从语 义上来讲是正确的。...
如何建立beanvalidation.org 一点点的Git,一点点的Ruby,您将获得本地的beanvalidation.org服务。先决条件获取 获取 > 1.9 获得来管理单独的Ruby环境(可选-您应该知道做什么以及为什么这么做)安装获取来源> git ...
**BeanValidation:深入理解Bean验证** BeanValidation是Java平台上的一个标准验证框架,它提供了一种声明式的方式来验证对象的属性。这个项目主要是对BeanValidation 1.1版本的深入研究,通过视频教程来帮助开发者...
Jakarta Bean验证规范该存储库包含Jakarta Bean验证规范。 有关Jakarta Bean验证和正在进行的工作的更多信息,请访问 。建筑文档该规范以AsciiDoc格式编写。 为了将其转换为呈现效果良好的输出,您需要在系统上安装...
【标题】: "Wicket-Bean-Validation-0.6.zip" 这个压缩包"**Wicket-Bean-Validation-0.6.zip**"是针对Apache Wicket框架的一个扩展,名为Wicket-Bean-Validation,主要用于在Java环境中实现模型对象的验证。Wicket-...
官方版本,亲测可用