2015-05-28 3 views
0

У меня есть форма Spring, которая называется AddNewItemForm и содержит аннотации для проверки.отправка формы на услугу

Эта форма является параметром моего метода весны RestControlleraddNewItem() и будет подтверждена, результаты сохраняются в BindingResults.

С моего контроллера мне нужно позвонить в службу. Вот мой вопрос. Это нормально, чтобы иметь метод внутри моей службы с этой подписью

public Item add(AddNewItemForm form) 

или лучше иметь его как

public Item add(Item item) 

Я имею в виду, что форма необходима только для проверки контроллера но службе не нужно знать об этом. Просто нужно знать, как работать с объектами.

Я полагаю, что я должен построить свой Item в контроллере со всеми данными, которые у меня есть, а затем передать этот элемент на службу add(item).

Я прав?

+0

Там могут быть случаи, когда проверка возможна на уровне обслуживания. Например. невозможно создать новый элемент, если элемент с именем уже существует или, например, владелец объекта пользователя заблокирован – StanislavL

+0

Я строго ссылался на передачу формы, используемой в контроллере для проверки, службе. Я проверяю в обоих местах, контроллер и службу. В контроллере я проверяю входные данные формы и в обслуживании. Я проверяю почти те же самые входы против другого типа логики, как тот, на который вы ссылались. – tzortzik

+1

Я согласен с вашим последним предложением. Проверка ввода формы в контроллере -> разбор его на сервисный объект и отправка его в службу, которая проверяет элемент. –

ответ

1

Подумайте об этом с точки зрения зависимостей: ваш веб-слой всегда должен знать о вашем сервисном модуле и передав AddNewItemForm (который, как я полагаю, существует в вашем веб-модуле/пакете), к вашей службе, теперь у вас есть круговая зависимость ,

Зависимости должны только течь вниз:

Repository> Услуги> Веб

1

С моей точки зрения служба не должна знать о вашем объекте команды (AddNewItemForm), поскольку они полностью независимы.

Я согласен с вашим последним предложением, вы должны создать свой объект модели перед тем, как позвонить в свою службу. В основном в вашем контроллере или с помощью служебного класса.

Смежные вопросы