我知道这听起来很奇怪,但是我需要在我的项目中满足这样的要求。让我们开始讨论吧。
我创建了一个也使用@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;
}
}
}