spring - 如何注册外部注释以供弹簧验证使用
问题描述
我有一个定义一些注释的库。这个注释可以添加到我的请求中,我想将该注释粘贴到一些自定义验证器上。
外部库
注释类
@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
}
}
我无法让 spring 使用我的UniqueLoginValidator来验证我的请求中使用UniqueValue注释的字段。关于如何将它们粘合在一起的任何想法?我不能使用@Constraint(validatedBy = [UniqueValueValidator::class])因为它在外部库中不可用。
解决方案
您可以创建一个新的注释来扩展库中的注释,并使用验证约束对该注释进行注释。
@UniqueValue
@Constraint(validatedBy = UniqueValueValidator.class)
public @interface ValidatedUniqueValue {
}
这意味着您将不得不使用这个新创建的注释而不是库中的注释。
推荐阅读
- c# - 为什么我的电子邮件确认令牌无效
- mongodb - MongoDB 插入给出模式验证错误
- python - SciPy“成功”找到不正确的最佳解决方案和“不成功”找到最佳解决方案(投资组合构建)
- python - 如何在 Python 中更新任何流之一后立即异步运行函数
- javascript - 关闭浏览器后清除 cookie 设置 JavaScript
- c# - Int32.Parse("356882") 生成异常 System.FormatException: '输入字符串的格式不正确。'
- c++ - 带有 UTF-8 字符串的 C++“股票行情”
- c - 将 unsigned char 数组转换为 char 数组
- python - Django ManyToManyField 呈现为 object() 而不是描述
- php - PHP 警告:in_array() 期望参数 2 为数组,在 /home/co 中给出 null