自定义注解
@Target({ElementType.METHOD,ElementType.FIELD}) //注解作用域 @Retention(RetentionPolicy.RUNTIME) //注解作用时间 @Constraint(validatedBy = MyConstriantValidator.class) //执行校验逻辑的类 public @interface MyConstraint { //校验不过时候的信息 String message() default "{org.hibernate.validator.constraints.NotBlank.message}"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; }
校验逻辑的执行类
@Slf4j public class MyConstriantValidator implements ConstraintValidator<MyConstraint,Object> { //两个泛型分别为自定义注解和要校验的类型 @Autowired //可自由注入Spring工厂的bean private HelloService helloService; /** * 初始化 * @param myConstraint */ @Override public void initialize(MyConstraint myConstraint) { log.info("my validator init"); } /** * 校验逻辑 * @param o //校验的参数 * @param constraintValidatorContext * @return */ @Override public boolean isValid(Object o, ConstraintValidatorContext constraintValidatorContext) { String value = helloService.sayHellp(o.toString()); log.info(value); return false; } }
使用
@MyConstraint(message = "这是一个测试") private String username;
@PutMapping("/{id:\\d+}") public User update(@RequestBody @Valid User user, BindingResult errors){ //这里BindingResult参数必须紧跟被@Valid注解的参数 if(errors.hasErrors()){ errors.getAllErrors().stream().forEach(error -> { // FieldError fieldError = (FieldError) error; // String message = fieldError.getField()+" "+error.getDefaultMessage(); log.info(error.getDefaultMessage()); }); } return user; }
最后附上常用的hibernate valid注解
作者:Meet相识_bfa5
链接:http://www.jianshu.com/p/b983219ed853
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
自定义valida验证注解
最新推荐文章于 2025-06-12 09:33:42 发布