pom.xml引入对应的依赖
<!-- Validation 依赖,提供数据校验功能 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>
SpringUtil
import cn.hutool.extra.spring.SpringUtil;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.boot.autoconfigure.thread.Threading;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
@Component
public final class SpringUtils extends SpringUtil {public static boolean containsBean(String name) {return getBeanFactory().containsBean(name);}public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {return getBeanFactory().isSingleton(name);}public static Class<?> getType(String name) throws NoSuchBeanDefinitionException {return getBeanFactory().getType(name);}public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {return getBeanFactory().getAliases(name);}@SuppressWarnings("unchecked")public static <T> T getAopProxy(T invoker) {return (T) getBean(invoker.getClass());}public static ApplicationContext context() {return getApplicationContext();}public static boolean isVirtual() {return Threading.VIRTUAL.isActive(getBean(Environment.class));}}
ValidatorUtils
import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException;
import jakarta.validation.Validator;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;import java.util.Set;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class ValidatorUtils {private static final Validator VALID = SpringUtils.getBean(Validator.class);public static <T> void validate(T object, Class<?>... groups) {Set<ConstraintViolation<T>> validate = VALID.validate(object, groups);if (!validate.isEmpty()) {throw new ConstraintViolationException("参数校验异常", validate);}}}
ValidatorConfig
import jakarta.validation.Validator;
import org.hibernate.validator.HibernateValidator;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;import java.util.Properties;
@AutoConfiguration(before = ValidationAutoConfiguration.class)
public class ValidatorConfig {@Beanpublic Validator validator(MessageSource messageSource) {try (LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean()) {factoryBean.setValidationMessageSource(messageSource);factoryBean.setProviderClass(HibernateValidator.class);Properties properties = new Properties();properties.setProperty("hibernate.validator.fail_fast", "true");factoryBean.setValidationProperties(properties);factoryBean.afterPropertiesSet();return factoryBean.getValidator();}}}
ValidatorUtils 进行校验
import com.deyi.dromara.common.core.utils.ValidatorUtils;
import jakarta.validation.constraints.NotBlank;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;class User {@NotBlank(message = "用户名不能为空")private String username;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}
}@RestController
public class UserController {@PostMapping("/users")public String createUser(@RequestBody User user) {ValidatorUtils.validate(user);return "用户创建成功";}
}