美文网首页
Spring Bean验证

Spring Bean验证

作者: 夏与清风 | 来源:发表于2019-07-27 22:32 被阅读0次

    当需要处理一个应用程序的业务逻辑时,数据校验是必须要进行的,应用程序必须通过某种手段来确保输入的数据在语义上是正确的。通常应用程序是分层的,同样的数据验证逻辑可能会出现在不同的层中,此时就会导致代码冗余等问题。为避免此问题,最好将验证逻辑与相应的域模型进行绑定。

    Bean Validation为Javabean验证定义了相应的元数据模型和API。默认的元数据是Java Annotations,通过使用XML可以对原有的元数据信息进行覆盖和扩展。在程序中可以通过Bean Validation或自定义的constraint(如@NotNull、@Max、@ZipCode),就可以确保数据模型的正确性。constraint可以附加到字段、getter方法、类或接口上。对于一些特定的需求,可以很容易的开发定制化的constraint。

    Bean Validation是一个运行时的数据验证框架,验证后的错误会立马返回。

    1、Bean验证

    spring框架支持Bean Validation1.0和Bean Validation1.1,也支持spring Validator接口。spring应用程序可以选择全局启用bean验证,并专门用于所有验证需求。还可以为每个DataBinder实例注册额外的spring Validator实例,对于插入验证逻辑而不使用注解的情况可能会有用。

    Bean Validation的内置约束:

    \bullet @AssertFalse

    用于约束字段或属性值必须是false。

    @AssertFalse

    boolean isSupport;

    \bullet @AssertTrue

    用于约束字段或属性值必须是true。

    @AssertTrue

    boolean isSupport;

    \bullet @DecimalMax

    用于约束字段或属性值必须是一个decimal类型的值,且值的大小必须小于或等于注解中的元素值。

    @DecimalMax("10.00")

    BigDecimal price;

    \bullet @Digits

    用于约束字段或属性值必须是指定范围内的数字。整数元素指定数字的最大整数,而小数元素指定数字的最大小数位数。

    @Digits(integer=5,fraction=2)

    BigDecimal price;

    \bullet @Future

    用于约束字段或属性值必须是将来的日期。

    @Future

    Date endTime;

    \bullet @Max

    用于约束字段或属性值必须是一个integer类型的值,且值的大小必须小于或等于注解中的元素值。

    @Max(10)

    int count;

    \bullet @Min

    用于约束字段或属性值必须是一个integer类型的值,且值的大小必须大于或等于注解中的元素值。

    @Min

    int count;

    \bullet @NotNull

    用于约束字段或属性值不能为空。

    @NotNull

    String name;

    \bullet @Null

    用于约束字段或属性值必须为空。

    @Null

    String desc;

    \bullet @Past

    用于约束字段或属性值必须是以前的日期。

    @Past

    Date birthday;

    \bullet @Pattern

    用于约束字段或属性值必须是匹配正则表达式的定义。

    @Pattern(regexp="\\(\\d{2}\\)\\d{3}-\\d{5}")

    String number;

    \bullet @Size

    对字段或属性的大小进行评估,且必须与指定的边界匹配。如果字段或属性是String,则会评估字符串的大小,如果集合则会对集合的大小进行评估,如果是map则会对map的大小进行评估,如果是数组则会对数组的大小进行评估。

    @Size(min=2,max=100)

    String msg;

    2、Validator接口

    spring提供了一个可以用来验证对象的Validator接口,它使用了Errors对象,验证器在验证时可以将验证失败报告发给Errors对象。

    User对象

    通过实现org.springframework.validation.Validator接口的方法来为User类提供验证行为。

    Validator接口

    \bullet supports(Class<?> var1):验证是否支持所提供的类的实例。

    \bullet validate(Object var1, Errors var2):验证给定的对象,并在验证出错误的时,将错误信息注册到给定的错误对象。

    UserValidator实现类

    ValidationUtils类的静态rejectIfEmpty()方法用于验证name属性,如果属性值为null或空字符串,则验证不通过或拒绝。

    --参考文献《Srping5开发大全》

    相关文章

      网友评论

          本文标题:Spring Bean验证

          本文链接:https://www.haomeiwen.com/subject/dlyqrctx.html