Hibernate-validator校验框架使用教程
来源:互联网 发布:java httpclient ssl 编辑:程序博客网 时间:2024/06/05 14:25
前言
- 这几天刚好在弄接口相关东西,发现如果对某个多字段的实体进行验证的话,会写很多麻烦而且冗余的代码,所以学了一下相关验证框架。
Hibernate-Validation
- 在各层中重复的校验逻辑既导致了不必要的资源消耗,还使得逻辑不够单一(每层都夹杂着校验的逻辑),JSR 303 Bean Validation就是在这种背景下产生的一个数据验证的J2EE规范。而我们这篇文中将要介绍的Hibernate Validator则是JBoss社区开源的一个JSR 303 Bean Validation规范的优秀实践
使用流程
- 导入maven
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.4.Final</version></dependency>
- 配置文件引入相关配置
<mvc:annotation-driven validator="validator"/><bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> <property name="validationMessageSource" ref="messageSource"/> </bean> <!-- 校验错误信息配置文件 --> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <!-- 资源文件名 --> <property name="basename" value="classpath:validationMessages"/> <!-- 对资源文件内容缓存时间,单位秒 --> <property name="fileEncodings" value="GBK"/> <property name="defaultEncoding" value="GBK"/> <property name="cacheSeconds" value="120"/> </bean>
- 创建存储错误消息的properties文件
notnull=该字段不能为空
- 在验证的model里面对字段进行验证
public class Demo implements Serializable { private static final long serialVersionUID = 1L; @NotBlank(message = "{notnull}") private String name; @NotEmpty(message = "{notnull}") private List<String> address; @NotNull(message = "{notnull}") private int address;}
- 注意:
- @NotEmpty 用在集合类上面
- @NotBlank 用在String上面
- @NotNull 用在基本类型上
使用方法
- 1 通过在接口出调用,自动验证
@RequestMapping(value = "/demo") public String baseInfoCompany(@RequestParam @Valid Demo demo ,BindingResult result) { if(result.hasErrors()){ //这边对错误消息进行处理 } return "success" }
- 2 通过工具类,主动验证某个实体类
@RequestMapping(value = "/demo") public String baseInfoCompany(@RequestParam Demo demo) { ValidateUtil.validate(demo); return "success" }
- ValidateUtil文件
public class ValidateUtil { public static <T> void validate(T obj) { LocalValidatorFactoryBean validator = (LocalValidatorFactoryBean) SpringContextHolder.getBean("validator");//这边获取spring已经实例化的验证器即可,即刚才配置文件里配置验证器id Set<ConstraintViolation<T>> constraintViolations = validator.validate(obj); //抛出检验异常 Iterator<ConstraintViolation<T>> iter = constraintViolations.iterator(); while (iter.hasNext()) { ConstraintViolation<T> error = iter.next(); StringBuffer buffer = new StringBuffer().append("[") .append(error.getPropertyPath().toString()).append("]") .append(error.getMessage()); throw new IllegalArgumentException(buffer.toString()); } }}
- 给点小福利吧,全局捕捉异常的例子
//这个定义要捕捉的异常类 @ExceptionHandler({IllegalArgumentException.class}) @ResponseBody public RespBean runTimeException(HttpServletRequest request, IllegalArgumentException e) { String uri = request.getRequestURI(); LOGGER.error("[" + uri + "]捕获非法异常{}", e.getMessage(), e); return ErrRespBean.newInstance(ReturnConsts.ERROR_EXCEPTION, e.getMessage()); }
后语
- 千万注意实体类里注解引用的message引用properties的key一定要正确,不然像我因为这个点,找了很久的问题。有什么问题可以留言,感谢您耐心看完。
阅读全文
0 0
- Hibernate-validator校验框架使用教程
- Hibernate-validator校验框架使用
- Hibernate-validator校验框架
- Hibernate-validator校验框架
- Hibernate-validator校验框架
- Hibernate-validator校验框架
- Hibernate-validator校验框架
- springmvc使用hibernate-validator校验框架实现后端校验
- jfinal整合Hibernate-validator校验框架
- springmvc使用hibernate-validator校验器
- 使用hibernate-validator校验报错解决
- Validator验证框架使用教程
- springMVC校验之hibernate validator校验器的使用
- Hibernate Validator参数校验
- Validator校验框架笔记
- JSR303校验框架介绍和Hibernate Validator扩展
- springMVC Hibernate Validator验证框架的使用
- Hibernate Validator自定义校验规则
- es6 导出class模块
- 【整理】Word OpenXML常用标签
- SOA、SOAP、RPC、REST、DUBBO的区别与联系
- Spring Boot Jpa 常用操作语句
- 进程池线程池
- Hibernate-validator校验框架使用教程
- 二叉树创建、遍历、深度、销毁
- 使用JNI做打卡器简单SDK
- 蓝桥杯 历届试题 回文数字 (Java解题)
- 安卓启动activity的方式(显式和隐式)
- 加一乘二平方
- android-开发一个小项目
- HUD2222(ac自动机)
- C#-WinForm跨线程修改UI界面