在grpc中校验java bean
定义一个工具类
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.xml.bind.ValidationException;
public class ValidationUtil {
private static Validator validator;
static {
ValidatorFactory vf = Validation.buildDefaultValidatorFactory();
validator = vf.getValidator();
}
public static <T> void validate(T t, Class<?>... groups) throws ValidationException{
Set<ConstraintViolation<T>> set = validator.validate(t, groups);
if(set.size()>0){
StringBuilder validateError = new StringBuilder();
for(ConstraintViolation<T> val : set){
validateError.append(val.getMessage() + " ;");
}
throw new ValidationException(validateError.toString());
}
}
}
被校验的java bean需要被注解
import java.util.Date;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.validation.constraints.Future;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.univer.time.validation.AllowedValues;
import com.univer.time.validation.ScheduleJobAdd;
import com.univer.time.validation.ScheduleJobUpdate;
import lombok.Data;
@Data
public class ScheduleJob {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String code;
@NotBlank(message = "jobName not null",groups = {ScheduleJobAdd.class, ScheduleJobUpdate.class})
private String jobName;
@NotBlank(message = "jobGroup not null",groups = {ScheduleJobAdd.class, ScheduleJobUpdate.class})
private String jobGroup;
调用方法做校验
// 校验请求数据
ValidationUtil.validate(scheduleJob, ScheduleJobAdd.class);
这里的业务逻辑是,如果有字段校验不通过,就抛出异常 使用的时候对异常进行捕捉,try-catch处理