Пользовательская проверка Джакарты – как избежать тесной связи Annotation и ConstraintValidatorJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Пользовательская проверка Джакарты – как избежать тесной связи Annotation и ConstraintValidator

Сообщение Anonymous »

У меня есть проект, который публикует контракт на обслуживание, например конечные точки и классы модели. Я создал специальную проверку Джакарты, которая проверяет, что при указании диапазона дат дата окончания должна быть позже или равна дате начала. Например:

Код: Выделить всё

@Constraint(validatedBy = DateRangeValidator.class)
public @interface DateRangeValid {
...
}

public class DateRangeValidator implements ConstraintValidator {
...
}
Однако похоже, что это создает очень тесную связь между аннотацией и действительными, поскольку обе они ссылаются друг на друга.
Есть ли способ разделить эти 2? Скажем, чтобы на аннотацию ссылался только Валидатор, а не наоборот?
Когда я смотрю на проверки, которые входят в состав Jakarta, например @Max, я вижу аннотация не ссылается ни на один валидатор:

Код: Выделить всё

@Constraint(
validatedBy = {}
)
public @interface Max {
...
}
Но когда я пробую то же самое со своей пользовательской аннотацией, в моих тестах появляется следующая ошибка:

Код: Выделить всё

jakarta.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint
Кто-нибудь знает способ решить эту проблему? В идеале я хотел бы публиковать только аннотации в моем контракте на обслуживание и сохранять логику проверки внутри моей службы, чтобы ее было легче изменить в будущем, если потребуется.

Подробнее здесь: https://stackoverflow.com/questions/791 ... and-constr
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»