Весна, валидация в Джакарте. Как избежать дублирования аннотаций проверки при проверке DTO и сущностей? ⇐ JAVA
Весна, валидация в Джакарте. Как избежать дублирования аннотаций проверки при проверке DTO и сущностей?
Я пытаюсь проверить как DTO (передаваемые в методы контроллера), так и объекты JPA. Но это часто приводит к дублированию правил валидации.
Применяемые правила проверки часто схожи как для классов Entity, так и для DTO, например (классы упрощены): Класс сущности продукта имеет имя, помеченное @NotEmpty:
@Entity @Стол класс Продукт { @Не пусто частное имя строки; // идентификатор, геттеры, сеттеры и т. д. } Класс NewProductRequest DTO также имеет имя @NotEmpty:
класс NewProductRequest { @Не пусто публичное имя строки; } В более сложных сценариях это приводит к массовому дублированию проверок. При использовании этого подхода любые изменения проверки, примененные к Продукту, должны также применяться и к ProductDTO.
Есть ли способ избежать дублирования аннотаций проверки, чтобы можно было следовать принципу DRY? Можно ли этого добиться с помощью пользовательских валидаторов Spring MVC?
Я пытаюсь проверить как DTO (передаваемые в методы контроллера), так и объекты JPA. Но это часто приводит к дублированию правил валидации.
Применяемые правила проверки часто схожи как для классов Entity, так и для DTO, например (классы упрощены): Класс сущности продукта имеет имя, помеченное @NotEmpty:
@Entity @Стол класс Продукт { @Не пусто частное имя строки; // идентификатор, геттеры, сеттеры и т. д. } Класс NewProductRequest DTO также имеет имя @NotEmpty:
класс NewProductRequest { @Не пусто публичное имя строки; } В более сложных сценариях это приводит к массовому дублированию проверок. При использовании этого подхода любые изменения проверки, примененные к Продукту, должны также применяться и к ProductDTO.
Есть ли способ избежать дублирования аннотаций проверки, чтобы можно было следовать принципу DRY? Можно ли этого добиться с помощью пользовательских валидаторов Spring MVC?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение