如何注册外部注解以供Spring验证使用

时间:2020-01-16 16:10:26

标签: spring spring-webflux spring-validator kotlin-multiplatform spring-kotlin

我有一个定义一些注释的库。可以将该注释添加到我的请求中,我想将该注释粘贴到一些自定义验证程序上。


外部库

注释类

@Target(
    AnnotationTarget.FUNCTION,
    AnnotationTarget.PROPERTY_GETTER,
    AnnotationTarget.PROPERTY_SETTER,
    AnnotationTarget.FIELD
)
@Retention(AnnotationRetention.RUNTIME)
annotation class UniqueValue()

请求类别

class PostReq(
    @field:UniqueValue
    val value: String
)

我的应用

@Component
class UniqueValueValidator() : ConstraintValidator<UniqueValue?, String?> {

    override fun initialize(constraint: UniqueValue?) {}

    override fun isValid(value: String?, context: ConstraintValidatorContext): Boolean {
        println("validation magic")
        return true
    }

}

我无法使用我的 UniqueLoginValidator 来验证请求中带有 UniqueValue 注释的字段。关于如何将它们粘合在一起的任何想法?我不能使用 @Constraint(validatedBy = [UniqueValueValidator :: class]),因为它在外部库中不可用。

1 个答案:

答案 0 :(得分:0)

您可以创建一个新的注释,从库中扩展一个注释,并使用验证约束对该注释进行注释。

@UniqueValue
@Constraint(validatedBy = UniqueValueValidator.class)
public @interface ValidatedUniqueValue {
}

这意味着您将不得不使用这个新创建的注释,而不是库中的注释。