`
liuzhongzhou2721
  • 浏览: 4140 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Bean Validation

阅读更多
[color=green][size=small][b][size=xx-large][size=xx-large][size=x-large][size=medium]Java EE6核心特征:Bean Validation解析
   

  Bean Validation是JavaEE6数据验证新框架,ValidationAPI并不依赖特定的应用层或是编程模型,这样同一套验证可由应用的所有层共享。它还提供了通过扩展ValidationAPI来增加客户化验证约束的机制以及查询约束元数据仓库的手段。

  在Java EE6的BeanValidation出现之前,开发者不得不在表示层框架、业务层以及持久层中编写验证规则以保证这些规则的同步性,但这么做非常浪费时间而且极易出错。BeanValidation是通过约束实现的,这些约束以注解的形式出现,注解可以放在JavaBean(如backingbean)的属性、方法或是类上面。约束既可以是内建的注解(位于javax.validation.constraints包下面),也可以由用户定义。一些常用的内建注解列举如下:

  ◆Min:被@Min所注解的元素必须是个数字,其值要大于或等于给定的最小值。

  ◆Max:被@Max所注解的元素必须是个数字,其值要小于或等于给定的最大值。

  ◆Size:@Size表示被注解的元素必须位于给定的最小值和最大值之间。支持Size验证的数据类型有String、Collection(计算集合的大小)、Map以及数组。

  ◆NotNull:@NotNull确保被注解的元素不能为null。

  ◆Null:@Null确保被注解的元素一定为null。

  ◆Pattern:@Pattern确保被注解的元素(String)一定会匹配给定的Java正则表达式。

  代码中通过BeanValidation注解声明了一些约束:

  public class Address {

  @NotNull @Size(max=30)

  private String addressline1;

  @Size(max=30)

  private String addressline2;

  public String getAddressline1() {

  return addressline1;

  }

  public void setAddressline1(Stringaddressline1){

  this.addressline1 = addressline1;

  }

  }

  @NotNull指定被注解的元素addressline1不能为null;@Size指定被注解的元素addressline1和addressline2不能超过给定的最大值,即30个字符。

  在验证Address对象时,addressline1的值被传递到针对@NotNull约束的验证类以及针对@Size约束的验证类中,而addressline2的值被传递到针对@Size约束的验证类中,由相关的验证类进行验证。如下代码自定义了一个名为ZipCode的约束:

  @Size(min=5, max=5)

  @ConstraintValidator(ZipcodeValidator.class)

  @Documented

  @Target({ANNOTATION_TYPE, METHOD, FIELD})

  @Retention(RUNTIME)

  public @interface ZipCode {

  String message() default Wrong zipcode;

  String[] groups() default {};

  }

  可以将@ZipCode用在类、属性或是方法上,就像其他约束一样。

  public class Address {

  @ZipCode

  private String zipCode;

  public String getZipCode() {

  return zipCode;

  }

  public void setZipCode(String zipCode) {

  this.zipCode = zipCode;

  }

  }

  Validation API

  开发者可以借助于ValidationAPI以编程的方式验证JavaBean。BeanValidationAPI的默认包是javax.validation。下面对该包中的一些类进行说明:

  ConstraintValidator:这是一个接口,具体的约束验证类需要实现该接口。该接口定义了相关的逻辑以验证给定对象类型中的约束。

  Validator:Validahttp://java.sun.com/javaee/6/docs/api/index.html?javax/validation/Validator.htmltor接口持有对象验证图的契约。该接口的实现必须是线程安全的。

  ConstraintViolation:ConstraintViolation接口表示给定bean上的约束验证失败,它公开了约束违背上下文以及描述该违背情况的信息。

  ValidationException:如果在验证过程中出现了某些不可恢复的错误就会抛出ValidationException异常。某些情况下可以指定该异常,如不合法的分组(group)定义、不合法的约束定义以及不合法的约束声明等等。

  约束元数据请求API

  BeanValidation规范提供了查询约束仓库的手段。该API主要用于工具支持和与其他框架、库以及JSR的集成。BeanValidation规范旨在为对象约束提供一个验证引擎和元数据仓库。需要进行约束定义、验证和元数据的框架(JavaEE或JavaSE)可以利用BeanValidation规范完成这些功能,从应用或是基础设施的角度来看,这么做可以避免不必要的重复工作。

  BeanValidation已经集成到了JSF2.0和JPA2.0中。在JSF中可以将表单输入域与域对象的属性绑定起来。JSF2和BeanValidation可以判断出绑定的是哪个属性并执行与之相关的验证,还会将约束违背的信息显示给用户。HibernateValidator4是BeanValidation规范的参考实现框架,其最新版增加了不少新特性,如分组验证、与JPA2和JSF2的自然集成以及扩展的注解集等等。
[/size][/size][/size]
[/size][/size][/b]
[/color]
分享到:
评论

相关推荐

    Bean Validation 规范文档

    《Bean Validation规范详解》 Bean Validation是Java平台上用于对象验证的一种标准,旨在提供一种简单而强大的方式来确保Java Bean对象的正确性和完整性。本规范文档深入解析了Bean Validation的各个方面,包括其...

    Bean Validation示例代码

    Bean Validation是Java世界中一种强大的数据验证框架,它允许开发者在模型对象(Bean)上定义约束,以便在运行时进行验证。这个框架的核心是JSR 303和JSR 349标准,它提供了统一的方式来处理业务逻辑中的数据验证,...

    Bean Validation 技术规范特性概述

    **Bean Validation 技术规范特性概述** Bean Validation 是Java平台上的一个标准,它定义了一种在应用程序中验证对象属性的方法。这项技术的核心是提供了一种声明式的方式,使得开发者可以在不编写大量验证代码的...

    BeanValidation(jar,英文手册,中文手册)合集

    BeanValidation(jar,英文手册,中文手册)合集BeanValidation(jar,英文手册,中文手册)合集.rarBeanValidation(jar,英文手册,中文手册)合集.rarBeanValidation(jar,英文手册,中文手册)合集.rarBeanValidation(jar,英文...

    Hibernate Bean Validation jar包

    Bean Validation 规范对 Java Bean 的验证流程如下:在实际使用中调用 Validator.validate(JavaBeanInstance) 方法后,Bean Validation 会查找在 JavaBeanInstance上所有的约束声明,对每一个约束调用对应的约束验证...

    Bean Validation技术实现对Javabean的校验

    Bean Validation是Java世界中一种强大的数据验证框架,它允许开发者定义和执行针对对象属性的验证规则,极大地提高了代码的可维护性和用户体验。本篇文章将深入探讨Bean Validation技术,以及如何利用它来对Javabean...

    Bean+Validation中文参考手册

    ### Bean Validation (JSR 303) 中文参考手册概览 《Bean+Validation中文参考手册》是一份详尽的指南,旨在介绍Java EE 6中Bean Validation规范(JSR 303)的核心概念、用法及其实现细节。Bean Validation是一个...

    JavaEE6 Bean Validation提供了实体验证元数据模型与API

    ### Java EE 6 Bean Validation:实体验证元数据模型与API #### 概述 Java EE 6中的Bean Validation(JSR 303)作为一项核心功能,为开发者提供了一个强大的实体验证框架。该框架定义了一种元数据模型以及一个API...

    Mybatis JSR303 bean validation plugin

    《Mybatis JSR303 Bean Validation 插件详解》 在Java开发中,数据验证是必不可少的一个环节,它能够确保输入的数据符合预期的格式和规则,从而避免因数据异常导致的程序错误。Mybatis,作为一款轻量级的持久层框架...

    beanvalidation-tck-tests-1.1.0.cr4-sources.jar

    官方版本,亲测可用

    beanvalidation-standalone-container-adapter-1.1.0.beta3.jar

    官方版本,亲测可用

    ★Bean Validation【Hibernate Validator 4.0 GA】中文参考手册!★

    本教程翻译自Hibernate Validator 4.0 GA指南,并参考JSR 303的规范,本着尽量不用JSR规范之外的特性,文档在编写时尽量不提及底层实现Hibernate Validator,而是关注Bean Validation规范本身。如果有不对之处,请...

    beanvalidation.org:Bean验证网站

    如何建立beanvalidation.org 一点点的Git,一点点的Ruby,您将获得本地的beanvalidation.org服务。先决条件获取 获取 > 1.9 获得来管理单独的Ruby环境(可选-您应该知道做什么以及为什么这么做)安装获取来源> git ...

    BeanValidation:Bean验证研究项目

    **BeanValidation:深入理解Bean验证** BeanValidation是Java平台上的一个标准验证框架,它提供了一种声明式的方式来验证对象的属性。这个项目主要是对BeanValidation 1.1版本的深入研究,通过视频教程来帮助开发者...

    bean-validation:了解Bean验证的工作原理

    在Java开发中,Bean Validation是用于验证对象属性的框架,它提供了一种标准的方式来约束和验证Java类的字段。Bean Validation允许开发者定义一组规则,这些规则会在数据绑定到对象时自动执行,确保输入数据的正确性...

    Hibernate Validator校验框架Demo

    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/> ``` 3. **编写实体类**:在需要验证的实体类中,使用约束注解标注字段。 ```java public class User {...

    validation-api-1.1.0.Final.jar

    JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,现在一共有两个规范:BeanValidation1.0(即JSR303)和BeanValidation1.1(即JSR349),主要用于对数据进行校验,确保输入进来的数据从语 义上来讲是正确的。...

    beanvalidation-spec:Bean验证规范

    Jakarta Bean验证规范该存储库包含Jakarta Bean验证规范。 有关Jakarta Bean验证和正在进行的工作的更多信息,请访问 。建筑文档该规范以AsciiDoc格式编写。 为了将其转换为呈现效果良好的输出,您需要在系统上安装...

    beanvalidation-addon-0.6.2.jar

    官方版本,亲测可用

Global site tag (gtag.js) - Google Analytics