平时使用Hibernate Validator + javax.validation.XXX 进行入参校验,由框架进行自动管理;
但很多情况下我们还是需要动态的手动去校验入参;于是简单写了个工具类;直接调用
AnaValidUtils.validObjectParams(Object object); 即可进行参数校验
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.executable.ExecutableValidator;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.Set;
/**
* 功能描述:valid工具类(目前支持属性校验和被@AssertTrue、@AssertFalse修饰的方法校验)
* 当入参存在问题,会抛出异常IllegalArgumentException;未知问题会抛出异常RuntimeException;
* Created by wangpeng on 2019/8/9.
*/
@Slf4j
public class AnaValidUtils {
private volatile static AnaValidUtils uniqueInstance;
private AnaValidUtils() {
}
private static AnaValidUtils getInstance() {
if (uniqueInstance == null) {
synchronized (AnaValidUtils.class) {
if (uniqueInstance == null) {
uniqueInstance = new AnaValidUtils();