当生活像一首歌那样轻快流畅时,笑颜常开乃易事;而在一切事都不妙时仍能微笑的人,是真正的乐观。——威尔科克斯
之前写过一篇springboot实现validator校验
今天进行一个补充
我们可以使用分组校验
首先是我们可以定义一个接口在我们的实现类里

然后在我们需要分组校验的注解上给上groups参数

最后在controller上也给我们的@Validated注解加上我们的分组参数

最后运行就只会校验我们分组的参数
那如果有这么一种场景:一个接口,传入Id时修改,不传入Id时新增,修改和新增又是不同的校验的话,我们该怎么处理呢?
其实很简单,我们可以注入一个Validator,然后在代码里进行分组校验

| package com.ruben;
 import com.ruben.pojo.User;
 import com.ruben.utils.SpringContextHolder;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.annotation.DependsOn;
 
 import javax.annotation.Resource;
 import javax.validation.ConstraintViolation;
 import javax.validation.ConstraintViolationException;
 import javax.validation.Validator;
 import java.util.Objects;
 import java.util.Set;
 
 @SpringBootTest
 @DependsOn("SpringContextHolder")
 class SimpleSpringbootApplicationTests {
 
 @Resource
 private Validator validator;
 
 @Test
 void test() {
 User user = User.builder().build();
 
 Set<ConstraintViolation<User>> checkResult;
 if (Objects.isNull(user.getId())) {
 
 checkResult = validator.validate(user, User.AddCheck.class);
 } else {
 
 checkResult = validator.validate(user, User.UpdateCheck.class);
 }
 if (!checkResult.isEmpty()) {
 
 throw new ConstraintViolationException(checkResult);
 }
 }
 
 }
 
 |