В общем, у вас есть два способа:
указание ограничений проверки непосредственно для полей классов.
API проверки бинов может помочь вам.
@NotEmpty
, @NotBlank
, ... - это ограничения, которые могут вас заинтересовать.
Пример этого API можно найти здесь .
определение класса, как вы это делали, который выполняет полную проверку объекта, обычно передаваемого в качестве параметра метода этого класса проверки.
API проверки бина все еще может вас заинтересовать.
У каждого способа есть свои преимущества и ограничения.
Вы должны знать о них и использовать способ, который лучше соответствует вашим требованиям.
Вот краткое резюмеприготовлено.Я, возможно, скучаю по некоторым вещам, но думаю, что это может дать вам некоторые идеи / идеи.
Указание ограничений на поля
Преимущества:
- ограничения, удерживаемые классами для проверки себя: код более осмысленный.
- ограничения, которые можно использовать повторно, если они не относятся к конкретному варианту использования.
Ограничения:
- Если у вас есть несколько способов проверки ограничений, этого будет недостаточно,
- проверка может быть разбита на несколько классов: сложнее читать / поддерживать код.
Пример: проверка сущностей JPA путем указания ограничений на сами классы сущностей имеет смысл: у вас есть один способ проверки каждого компонента (в соответствии с моделью данных), и вы хотите повторно использовать эти проверки.
Определение класса валидатора
Преимущества:
- расширяемая модель: позволяет несколькими способами проверять ограничения объекта: просто создайте новый валидатор
- одно место для чтения / сохранения кода проверки.
- не нужно менять классы для проверки себя (иногда вы не можете или не хотите)
Ограничения:
- ограничения не могут быть использованы повторно, даже если ограничения не являются специфическими для варианта использования.Вы должны создать новый класс валидатора для каждого случая.
Пример: проверка пользовательских запросов в соответствии с их профилем с использованием классов валидатора имеет смысл: у вас могут быть разные правила в соответствии с профилем пользователя, и вы также хотите разделить их в конкретном классе валидатора, чтобы упростить их обслуживание/ читаемость.