Java校验框架-Oval

  • 介绍
  • 例子
    • 代码
        • pom.xml
        • Student.java
        • ClassInfo.java
      • TypeCheck.java
      • StudentVerifyTest.java
    • 运行测试类
  • 其他使用

介绍

文档:http://oval.sourceforge.net/userguide.html#dependencies
下载:https://sourceforge.net/projects/oval/
OVal is an extensible object validation framework for Java 5 or later. Annotations (@NotNull) or XML configuration files can be used to express class constraints. OVal can optionally use AspectJ to enforce automatic validation (DbC)

例子

代码

pom.xml
<dependencies><!-- OVAL验证框架 --><dependency><groupId>net.sf.oval</groupId><artifactId>oval</artifactId><version>1.87</version></dependency><!-- test --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- 日志 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.20</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId><version>1.7.25</version></dependency></dependencies>
Student.java
package com.ydfind.verify.oval.model;import com.ydfind.verify.oval.TypeCheck;
import lombok.Data;
import net.sf.oval.constraint.*;@Data
public class Student {@NotNull(profiles = {"profile1"})@Length(min = 2, profiles = {"profile1"})private Integer id;@Length(max = 1, profiles = {"profile1"})private Integer age;@CheckWith(value = TypeCheck.class, message = "名称必须为张三")private String name;private String address;private String phone;@NotEmptyprivate String sex;//    @NotNull@AssertValid// 递归校验,通常与notnull一起使用private ClassInfo classInfo;@Email(profiles = {"profile1"})private String email;@DateRange(format = "yyyy-MM-dd", message = "日期格式不正确")private String birthDay;
}
ClassInfo.java
package com.ydfind.verify.oval.model;import lombok.Data;
import net.sf.oval.constraint.NotEmpty;@Data
public class ClassInfo {@NotEmptyprivate String school;
}

TypeCheck.java

package com.ydfind.verify.oval;import net.sf.oval.constraint.CheckWithCheck;public class TypeCheck implements CheckWithCheck.SimpleCheck{@Overridepublic boolean isSatisfied(Object o, Object o1) {if(o1 instanceof String && "张三".equals((String)o1)){return true;}return false;}
}

StudentVerifyTest.java

package com.ydfind.verify;import com.ydfind.verify.oval.model.ClassInfo;
import com.ydfind.verify.oval.model.Student;
import lombok.extern.slf4j.Slf4j;
import net.sf.oval.ConstraintViolation;
import net.sf.oval.Validator;
import org.junit.Test;import java.util.List;@Slf4j
public class StudentVerifyTest {@Testpublic void testVerify() {Student student = new Student();Validator validator = new Validator();// 初始化为正确的校验参数student.setId(10);student.setAge(8);student.setName("张三");student.setAddress("北京市");student.setPhone("18765230986");student.setSex("男");student.setEmail("yd@ydfind.com");student.setBirthDay("1996-10-05");ClassInfo classInfo = new ClassInfo();classInfo.setSchool("北京外国语大学");student.setClassInfo(classInfo);verifyStudent(validator, student);// 设置错误的参数student.setId(1);student.setAge(18);student.setName("李四");student.setSex("");student.setEmail("www.ydfind.com");student.getClassInfo().setSchool("");student.setBirthDay("1996.10.05");verifyStudent(validator, student);// 设置错误的参数student.setClassInfo(null);validator.disableProfile("profile1");verifyStudent(validator, student);}/*** 对对象进行校验* @param validator* @param obj*/private static void verifyStudent(Validator validator, Object obj){List<ConstraintViolation> violations = validator.validate(obj);if(violations.size() > 0){log.info("----------------------Object is invalid:------------------");for(ConstraintViolation violation: violations){log.error(violation.getMessage());}} else {log.info("----------------------Object is valid:-------------------");}}
}

运行测试类

其他使用

@Size(min = 1, message = "查询类型不能为空")
private List<String> list;
@ValidateWithMethod(methodName = "isValidDate", parameterType = String.class
private String date;public boolean isValidDate(String date) {try {DateUtils.parseDate(date, "yyyy-MM-dd");} catch (ParseException e) {return false;}return true;}

Java校验框架-Oval相关推荐

  1. java oval_Java对象校验框架Oval怎么使用 | 学步园

    OVal是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件.Annotation.POJOs进行设定.可以使用纯Java语言.JavaScript.Groovy.BeanShell等进 ...

  2. Java后端校验框架oval与hibernatevalidator的使用

    1 oval 1)Oval 官方地址: http://oval.sourceforge.net/ 2)依赖 <dependency><groupId>net.sf.oval&l ...

  3. Java校验框架使用@Valid、@Validated、OVAL+Groovy

    @Valid 与 @Validated Spring Validation验证框架对参数的验证机制提供了@Validated; javax提供了@Valid,配合BindingResult可以直接提供 ...

  4. java校验框架源码解析_Spring Boot原理剖析和源码分析

    Spring Boot原理剖析和源码分析 依赖管理 问题一:为什么导入dependency时不需要指定版本? spring-boot-starter-parent依赖 org.springframew ...

  5. Java对象校验框架之Oval

    只要有接口,就会有参数的校验,目前开源的校验框架已经非常多了,不过不得不提一下Oval. OVal 是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件.Annotation.POJOs ...

  6. java 数据校验框架_自己写的基于java Annotation(注解)的数据校验框架

    JavaEE6中提供了基于java Annotation(注解)的Bean校验框架,Hibernate也有类似的基于Annotation的数据校验功能,我在工作中,产品也经常需要使 用数据校验,为了方 ...

  7. java oval 使用_java开源验证框架OVAL应用实例

    java开源验证框架OVAL应用实例 对oval验证框架进行分类,并针对常用的验证规则进行总结,从而可以抽象成模型可以定义,达到定义后自动生成,减少开发人员的工作量,同时也规范化代码结构. 1.  验 ...

  8. java开源验证框架OVAL帮助文档

    OVAL验证框架帮助文档 目录 1.  注解说明 1.1.  @Assert 1.2.   @AssertFalse.@AssertTrue,@AssertNull 1.3.  @AssertURL ...

  9. java常用框架总结

    今天想看看现在常用的框架有哪些,发现网上文章不多决定根据自己的理解写一篇文章,如有错误希望大家包涵: 1.java的5大框架.springboot都不说了,网上资料很多: 2.缓存工具:Ehcache ...

最新文章

  1. bootstrap源码里的function加上了+号
  2. mysql 占比函数_MySQL中你必须了解的函数
  3. 再见 Spring Task,这个定时任务框架真香!
  4. linux中进程优先级,linux下调整进程优先级
  5. windows上安装使用mySql
  6. Python入门--列表元素的删除,remove(),pop(),切片,clear(),del
  7. 20200411使用Potplayer对视频进行逐帧截图
  8. html怎么添加视频旋转,拍摄的视频如何旋转 三种方法教你旋转视频
  9. What is a hardlink and how to create one?
  10. win7计算机电源设置在哪里设置,Win7系统如何设置电源选项
  11. explain的使用及详解
  12. UNR2 黎明前的巧克力
  13. 地图符号库的制作方法-s52符号显示库中的矢量符号描述语言
  14. 基本:HEX文件格式定义
  15. 统计每个部门下男、女人数;统计所有部门中全是男生、全是女生、即有男生又有女生个数
  16. python熊猫弹幕_GitHub - qingyuj/danmu: Python 弹幕包 A live danmu package for python
  17. RT-Thread ART-Pi 外部SPI Flash分区挂载为U盘
  18. Eclipse 插件
  19. 看历史涨知识!高速公路知多少?
  20. 掘金量化是什么?有哪些特点?

热门文章

  1. 数据库常用的操作命令
  2. Java虚拟机如何运行Java字节码?
  3. 【Codesys】字节数组转长字节,长字节转字节数组,同点位坐标系位置偏移计算
  4. MATLAB音频信号处理(一):函数简易用法(audioread,sound函数)
  5. c++ 指针类型的引用
  6. vue3支持多根节点,eslint插件报错只能有一个根节点
  7. HW6:物理系统与碰撞
  8. 【转】msdev devenv 的命令行用法(以编译BerkeleyDB为例)
  9. 修改MySQL 数据库 密码
  10. 图书馆管理系统用户调研