当前位置: 首页 > backend >正文

ValidatorUtils工具

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;/*** spring工具类** @author Lion Li*/
@Component
public final class SpringUtils extends SpringUtil {/*** 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true*/public static boolean containsBean(String name) {return getBeanFactory().containsBean(name);}/*** 判断以给定名字注册的bean定义是一个singleton还是一个prototype。* 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)*/public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {return getBeanFactory().isSingleton(name);}/*** @return Class 注册对象的类型*/public static Class<?> getType(String name) throws NoSuchBeanDefinitionException {return getBeanFactory().getType(name);}/*** 如果给定的bean名字在bean定义中有别名,则返回这些别名*/public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {return getBeanFactory().getAliases(name);}/*** 获取aop代理对象*/@SuppressWarnings("unchecked")public static <T> T getAopProxy(T invoker) {return (T) getBean(invoker.getClass());}/*** 获取spring上下文*/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;/*** Validator 校验工具*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class ValidatorUtils {private static final Validator VALID = SpringUtils.getBean(Validator.class);/*** 对给定对象进行参数校验,并根据指定的校验组进行校验** @param object 要进行校验的对象* @param groups 校验组* @throws ConstraintViolationException 如果校验不通过,则抛出参数校验异常*/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);// 设置使用 HibernateValidator 校验器factoryBean.setProviderClass(HibernateValidator.class);Properties properties = new Properties();// 设置快速失败模式(fail-fast),即校验过程中一旦遇到失败,立即停止并返回错误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 "用户创建成功";}
}
http://www.xdnf.cn/news/1970.html

相关文章:

  • uni-app云开发总结
  • SQL进阶知识:九、高级数据类型
  • Dify依赖管理poetry切换为uv
  • Kafka和Spark-Streaming
  • 解释两个 Django 命令 makemigrations和migrate
  • 【器件专题1——IGBT第2讲】IGBT 基本工作原理:从结构到特性,一文解析 “电力电子心脏” 的核心机制
  • 5.6 Microsoft Semantic Kernel:专注于将LLM集成到现有应用中的框架
  • Pycharm(十六)面向对象进阶
  • 深度解析 Java 泛型通配符 `<? super T>` 和 `<? extends T>`
  • 使用功能包组织C++节点的具体教程
  • 天能资管(SkyAi):精准投资匹配,定制资产配置新体验
  • 202531读书笔记|《天上大风:良宽俳句·短歌·汉诗400》——我别无他物款待君,除了山中冬日寂寥,陶然共一醉,不知是与非,一饱百情足,一酣万事休
  • AI重塑职场:人机协同时代的组织变革与管理创新
  • AWS Glue ETL设计与调度最佳实践
  • 【HTTP/2:信息高速公路的革命】
  • 6.Three.js 中的 OrthographicCamera 详解(含示例)
  • 微信小程序文章管理系统开发实现
  • 5种隐蔽的外挂获取执行时机方法介绍
  • Ubuntu 上手动安装 Go 环境并解决“可执行文件格式错误”
  • 反射、枚举以及lambda表达式
  • 某些网站不允许复制怎么办
  • 蓝桥杯 4. 卡片换位
  • txtai:全能AI框架
  • 龙虎榜——20250425
  • spreadsheet 之websheet
  • vue项目前后端分离设计
  • 从氛围到节奏:情绪化配乐网站指南
  • 【Harmony_Bug】forEach + asyncawait 的异步陷阱
  • assertEquals()
  • 基于AIGC的3D场景生成实战:从文本描述到虚拟世界构建