`
liyixing1
  • 浏览: 939526 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

Bean Validation 1.0(JSR-303)

阅读更多
http://jinnianshilongnian.iteye.com/blog/1495594Bean Validation 1.0(JSR-303)


一、Bean Validation框架简介
写道
Bean Validation standardizes constraint definition, declaration and validation for the Java platform.
大体意思是:Bean Validation 标准化了Java平台的约束定义、描述、和验证。

详细了解请参考:http://beanvalidation.org/

Bean Validation现在一个有两个规范:

1、Bean Validation 1.0(JSR-303)
写道
This JSR will define a meta-data model and API for JavaBeanTM validation based on annotations, with overrides and extended meta-data through the use of XML validation descriptors.
定义了基于注解方式的JavaBean验证元数据模型和API,也可以通过XML进行元数据定义,但注解将覆盖XML的元数据定义。

详细了解请参考:http://jcp.org/en/jsr/detail?id=303

JSR-303主要是对JavaBean进行验证,如方法级别(方法参数/返回值)、依赖注入等的验证是没有指定的。因此又有了JSR-349规范的产生。

2、Bean Validation 1.1(JSR-349)
写道
Bean Validation standardizes constraint definition, declaration and validation for the Java platform.
Bean Validation 标准化了Java平台的约束定义、描述、和验证。

此规范目前处于草案状态,详细了解请参考:http://jcp.org/en/jsr/detail?id=349.

该草案现在主要内容:
方法级别验证支持(验证方法参数和和返回值);
依赖注入验证的支持。
 
对Bean Validation的详细介绍可参考Bean Validation官网查看http://beanvalidation.org/。

Spring3.1目前已经完全支持依赖注入验证和方法级别验证的支持,只是不是原生的(规范还是草案)。

Bean Validation 1.0的参考实现有Hibernate Validator(下载地址:http://www.hibernate.org/subprojects/validator.html);1.1还处于草案状态。


可以在任何位置实施验证。

1、表现层验证:SpringMVC提供对JSR-303的表现层验证;
2、业务逻辑层验证:Spring3.1提供对业务逻辑层的方法验证(当然方法验证可以出现在其他层,但笔者觉得方法验证应该验证业务逻辑);
3、DAO层验证:Hibernate提供DAO层的模型数据的验证(可参考hibernate validator参考文档的7.3. ORM集成)。
4、数据库端的验证:通过数据库约束来进行;
5、客户端验证支持:JSR-303也提供编程式验证支持。

参考《hibernate validator reference》。


Spring3.1支持方法级别验证(Bean Validation 1.1草案)

没有方法级别验证可能是
public UserModel get(Integer uuid) {
    //前置条件
    Assert.notNull(uuid);
    Assert.isTrue(uuid > 0, "uuid must lt 0");

    //获取 User Model
    UserModel user = new UserModel(); //此处应该从数据库获取

    //后置条件
    Assert.notNull(user);
    return user;
}



有了MethodValidationPostProcessor之后我们可以这样验证:
public @NotNull UserModel get2(@NotNull @Size(min = 1) Integer uuid) {
    //获取 User Model
    UserModel user = new UserModel(); //此处应该从数据库获取
    return user;
}


开启Spring3.1对方法级别验证支持(spring-config-method-validator.xml)


<!--注册方法验证的后处理器-->
<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics