自定义注解校验器
来源:互联网 发布:文化自信 知乎 编辑:程序博客网 时间:2024/06/14 15:20
想必大家都使用过validation框架,例如下图
框架已经给我们提供了不少的校验注解,那么如果我们有时候针对特殊情况需要自定义校验那么需要怎么做呢?
例如:我们在生成订单号的时候会根据平台的自有规则去生成,那么在查询订单的时候我们可以自定义校验来对这个传递的订单号进行校验
1:引入validationjar包
2:新建一个annotation
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
/**
* 自定义验证注解
*
* @author Daniel
*
*/
@Target({ElementType.METHOD, ElementType.FIELD}) //注解作用的地方,此处定位为作用与方法和字段上
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = MyValidMethod.class) //指定来处理验证的类
public @interface MyValid {
String message(); //这边可以标注默认的验证失败消息
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
3:新建上面指定的处理类
package com.example.demo.validate;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.springframework.beans.factory.annotation.Autowired;
import com.example.demo.service.UserService;
/**
* @author Daniel
*
* 自定义的注解验证方法
* 实现ConstraintValidator<T,T>
* 两个泛型类型为:
* 第一个:你自定义的注解
* 第二个:传递的值例如你定义在field字段上,那么这个类型就是你定义注解的那个字段类型
* ConstraintValidator<MyValid, Object>
*
* 在这边只要实现了ConstraintValidator<T,T>,那么你的这个方法就会被spring容器纳入管理
* 因此你就可以很方便的在这个验证方法中注入spring管理的类去进行业务逻辑验证
*
*/
public class MyValidMethod implements ConstraintValidator<MyValid, Object> {
@Autowired
private UserService userService;
/**
* 初始化方法
*
*/
@Override
public void initialize(MyValid constraintAnnotation) {
System.out.println("自定义验证初始化");
}
/**
* 验证方法
* 验证成功返回: true
* 验证失败返回: false
*/
@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
userService.sayHello(value.toString());
return false;
}
}
4:在需要验证的字段上添加自定义的注解
5:新建controller方法
6:执行test测试,这边把username传递为空会出现校验提示(这边在校验处理类中直接返回的false校验不过,实际情况结合业务去处理)
- 自定义注解校验器
- 自定义校验型注解
- 自定义注解校验
- JavaUtils-自定义注解校验格式
- 自定义注解@NeedLogin登录校验
- spring boot 自定义校验注解
- Spring中使用自定义的注解校验器的实现
- SpringMVC自定义注解进行日期校验
- 自定义校验器实例
- struts2--自定义校验器
- 利用Spring AOP自定义注解解决日志和签名校验
- 利用Spring AOP自定义注解解决日志和签名校验
- 利用反射打造自定义注解,自动校验或处理数据
- Spring AOP自定义注解解决日志和签名校验
- 使用自定义注解进行restful请求参数的校验
- java 自定义注解 校验参数是否为空
- hibernate validator自定义注解实战之《枚举值校验》
- 利用Spring AOP自定义注解解决日志和签名校验
- wpf做的连接mysql数据库项目——jingyanzongjie
- 【Scikit-Learn 中文文档】十四:多类和多标签算法
- bzoj 4465: [Jsoi2013]游戏中的学问
- 环境搭建-Hadoop集群搭建
- Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法
- 自定义注解校验器
- scala编程04--数组
- 第十二周 Prim算法的验证
- Nginx浏览器缓存设置
- OkHtttp拦截器
- 写定时任务的参考代码
- Shiro入门学习三
- JSP
- ETH挖矿工具之长沙矿工