У меня есть проект, который публикует контракт на обслуживание, например конечные точки и классы модели. Я создал специальную проверку Джакарты, которая проверяет, что при указании диапазона дат дата окончания должна быть позже или равна дате начала. Например:
Код: Выделить всё
@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