pure-validation可配置、无侵入、易拓展、热加载、轻量级动态参数验证框架


pure-validation一款可配置、无侵入、易拓展、热加载、轻量级的动态参数验证框架,可替代hibernate-validation,代码总数不足1000行,简单易学,也可以自行拓展实现更多验证器validator,有需要star一下。

github: https://github.com/purestackorg/pure-validation

默认包含多个通用验证实现

<?xml version="1.0" encoding="UTF-8"?>

	
	
	
	
	
	
	
	
	
	
	

  1. 定义全局规则配置,引入各个实体验证规则
<?xml version="1.0" encoding="UTF-8"?>

	
	
	

  1. 定义user和article实体验证规则

user.rule.xml规则

<?xml version="1.0" encoding="UTF-8"?>

	
	
		
		
			
			
				
				
			
			
				
			
		
		
			
			
				
			
			
				
			
			
				
			
		
		
			
				
			
		
		
			
				
			
		
		
			
				
			
			
				
				
			
		
		
			
		
		
			
				
			
		
		
			
				
			
		
	


article.rule.xml规则
```xml
<?xml version="1.0" encoding="UTF-8"?>

	
	
		
		
			
			
			
				
				
			
		
	

  1. 定义测试实体类

import java.sql.Timestamp;

/**
 * 用户对象
 *
 */
public class User {
    // 用户名
    private String username;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    // 密码
    private String password;
    // 确认密码
    private String passwordOne;

    // 邮箱
    private String email;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPostcode() {
        return postcode;
    }

    public void setPostcode(String postcode) {
        this.postcode = postcode;
    }

    public Double getStars() {
        return stars;
    }

    public void setStars(Double stars) {
        this.stars = stars;
    }

    private String address;
    private String postcode;
    private Double stars;

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    private Integer age;

    private Timestamp starttime;
    private Timestamp endtime;

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPasswordOne() {
        return passwordOne;
    }

    public void setPasswordOne(String passwordOne) {
        this.passwordOne = passwordOne;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Timestamp getStarttime() {
        return starttime;
    }

    public void setStarttime(Timestamp starttime) {
        this.starttime = starttime;
    }

    public Timestamp getEndtime() {
        return endtime;
    }

    public void setEndtime(Timestamp endtime) {
        this.endtime = endtime;
    }
}
  1. 定义单元测试方法,查看效果

import com.purestack.common.validation.BasicValidateService;
import com.purestack.common.validation.IValidateService;
import com.purestack.common.validation.ValidationResult;
import com.purestack.common.validation.config.BasicValidateConfig;
import com.purestack.common.validation.config.IValidateConfig;
import org.junit.jupiter.api.Test;
import java.sql.Timestamp;
import java.util.Calendar;

import org.apache.log4j.Logger;

public class ValidationTest {

    private static Logger logger = Logger.getLogger(ValidationTest.class);
    @Test
    public void testValid() {

        // 验证器配置,系统默认配置
        String validatorsXML = "validation/validators.xml";

        // 规则配置
        String rulesXML = "validation/rules.xml";

        /**
         * 实例化配置对象
         */
        IValidateConfig config =new BasicValidateConfig(validatorsXML, rulesXML);
        /**
         * 实例化验证服务层
         */
        IValidateService validateService = new BasicValidateService(config);

        // 实例化用户
        User user = createUser();

        /**
         * 执行验证
         */
        ValidationResult result = validateService.validate(user, "user.rule");
        // 输出结果
        if(result.isValid()) {

            logger.info("验证成功.");
        } else {
            logger.info("验证失败,结果如下");
            logger.info(result.getErrors());

        }
    }

    public User createUser(){
        User user = new User();

        user.setEmail("test#purestack.cc");

        user.setPassword("123");
        user.setPasswordOne("abc");
        user.setAge(70);
        user.setPostcode("4422222");

        Calendar date = Calendar.getInstance();

        user.setStarttime(new Timestamp(date.getTimeInMillis()));
        user.setEndtime(new Timestamp(date.getTimeInMillis()-1000));
        return user;

    }
}

简单的4个步骤即可完成动态配置验证规则,简单方便,你值得拥有!