如何在Validator类中使用注释?

时间:2019-05-28 19:48:53

标签: java validation annotations

我知道这听起来很奇怪,但是我需要在我的项目中满足这样的要求。让我们开始讨论吧。

我创建了一个也使用@Constraint的自定义注释,并在另一个实现ConstraintValidator接口的类中实现了我的自定义验证逻辑。不幸的是,javax.validation从未作为该项目的依赖项添加(@Valid@NotBlank@Email等不起作用),所以我被迫实施{{1 }}界面。

我知道我可以将自定义逻辑放入Validator的{​​{1}}方法中(尝试并起作用),但是我希望保留我的自定义注释,以防其他开发人员需要项目标准改变的未来。

我可以以某种方式从Validator实例调用注释的Validator方法吗?考虑到不允许我添加依赖项这一事实,这是否可行,或者甚至仍然是明智的选择?

TLDR代码段:(写在我的头上,如果有语法错误,抱歉)

自定义注释

validate()

自定义验证器

isValid()

验证器的预期用法

@Retention(RUNTIME)
@Target({TYPE})
@Constraint(validatedBy = myCustomValidator.class)
public @interface myCustomAnnotation {
    String message() default "dummy";
    Class[] groups() default {};
    Class[] payload() default {};

    class myCustomValidator implements ConstraintValidator<myCustomAnnotation, Object> {
        // @Overload initialize
        // some code here

        // @Overload isValid
        public boolean isValid(Object object, ConstraintValidatorContext ctx) {
            // some code here, simple return for demonstration purposes
            return object != null;
        }
    }
}

0 个答案:

没有答案