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

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 "用户创建成功";}
}

相关文章:

  • 《Piper》皮克斯技术解析:RIS系统与云渲染如何创造奥斯卡级动画短片
  • 【C语言练习】002. 理解C语言的基本语法结构
  • ECMAScript 1(ES1):JavaScript 的开端
  • 基于大牛直播SDK的Android屏幕扬声器采集推送RTMP技术解析
  • 浅谈OpenAIClaude LLM Tools的额外配置
  • 计算机网络中的DHCP是什么呀? 详情解答
  • 【速写】钩子与计算图
  • 抓包工具Wireshark的应用解析
  • Linux文件管理完全指南:从命名规则到压缩解压
  • 每日c/c++题 备战蓝桥杯(P1049 [NOIP 2001 普及组] 装箱问题)
  • 分层设计数据仓库的架构和设计高效数据库系统的方法
  • 自然语言处理+知识图谱:智能导诊的“大脑”是如何工作的?
  • 人工智能常见的数据处理方法
  • 感知古今:探秘古代传感器的奇妙世界
  • 架构师面试(三十六):广播消息
  • 重置 Git 项目并清除提交历史
  • QuickLookv3.7.3(官方版)文件快速预览工具软件下载及安装教程
  • websheet 之 table表格
  • 高精度电流检测革命:同轴分流器的创新应用与技术演进
  • 罗德FSP13 FSP40频谱分析仪频率13.6GHz
  • 体育公益之约跨越山海,雪域高原果洛孕育足球梦
  • 经济日报刊文:积极应对稳住外贸基本盘
  • 中国气象局:针对山西、广西、陕西启动抗旱四级应急响应
  • 还山记——走进山水、感受山水艺术的魅力
  • 停止水资源共享、驱逐武官,印度对巴基斯坦宣布多项反制措施
  • 中海宏洋集团4.17亿元竞得浙江绍兴宅地,溢价率20.87%