自定义valida验证注解

来源:互联网 发布:无忧推广软件骗局 编辑:程序博客网 时间:2024/06/06 20:31
  • 自定义注解

@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 {};}
  • 校验逻辑的执行类

@Slf4jpublic 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
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原创粉丝点击