<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
package com.msxf.demo.validtion;
import javax.validation.groups.Default;
/**
* @author: hzq
* @date: 2022/4/22
*/
public interface Add extends Default {
}
package com.msxf.demo.model;
import com.msxf.demo.validtion.Add;
import com.msxf.demo.validtion.Edit;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @author: hzq
* @date: 2022/4/22
*/
@Data
public class ValidModel {
@NotBlank(message = "name must not null", groups = Edit.class)
private String name;
@NotNull(message = "年龄不能为空", groups = Add.class)
private Integer age;
}
package com.msxf.demo.util;
import cn.hutool.extra.spring.SpringUtil;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Set;
/**
* @author: hzq
* @date: 2022/4/22
*/
public class ValidatorUtil {
// private static final Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
private static final Validator validator = SpringUtil.getBean(Validator.class);
public static <T> Set<ConstraintViolation<T>> validate(T object,
Class<?>... groups) {
return validator.validate(object, groups);
}
public static <T> Set<ConstraintViolation<T>> validateProperty(T object,
String propertyName,
Class<?>... groups) {
return validator.validateProperty(object, propertyName, groups);
}
public static <T> Set<ConstraintViolation<T>> validateValue(Class<T> beanType,
String propertyName,
Object value,
Class<?>... groups) {
return validator.validateValue(beanType, propertyName, value, groups);
}
public static Validator validator() {
return validator;
}
}
package com.msxf.demo;
import com.msxf.demo.model.ValidModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Objects;
import java.util.Set;
import com.msxf.demo.validtion.Add;
@Slf4j
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
Validator bean = SpringUtil.getBean(Validator.class);
ValidModel validModel = new ValidModel();
// validModel.setName("张三");
Set<ConstraintViolation<ValidModel>> validate =
bean.validate(validModel,Add.class);
validate.stream().map(Objects::toString).forEach(log::info);
}
}
当 Set<ConstraintViolation<ValidModel>> validate = validator.validate(validModel);不为空时代表校验不通过。
输出检验错误
ConstraintViolationImpl{interpolatedMessage='年龄不能为空', propertyPath=age, rootBeanClass=class com.msxf.demo.model.ValidModel, messageTemplate='年龄不能为空'}