Где разместить бизнес-логику в приложении Spring Hibernate?

У меня есть приложение, написанное с использованием фреймворков Spring и Hibernate. Все работает правильно, но у меня есть один вопрос: если контроллеры вызывают бизнес-логику, вызывая методы сервисного уровня, куда должен идти определенный код, например. в следующем коде должен ли код для настройки новой роли пользователя и пароля находиться в методе контроллера, обрабатывающем запрос POST страницы AddPerson, или в методе сервисного уровня?

// Saves addPerson.jsp.
 @RequestMapping(value = "/add", method = RequestMethod.POST)
 public String postAdd(@ModelAttribute("person") Person person) {  
      logger.debug("PersonController.postAdd called");

      // Create random number for new Person's password.
      person.setPassword(String.valueOf(Java_Utils.getRandomNumber()));

      // Create role for new Person.
      person.setRole("PERSON");

      // Add Person.
      personService.add(person);

      // Set records.jsp
      return "redirect:/demo/main/record/list";
 }

Это, конечно, только простой пример, но мне любопытно. Роль PERSON состоит в том, чтобы удовлетворить ограничение с помощью Tomcat, чтобы предотвратить доступ пользователя к странице, прошедшей проверку подлинности.


person Mr Gwent    schedule 25.03.2013    source источник


Ответы (1)


Он должен быть на сервисном уровне. Уровень контроллера предназначен для обработки и перевода элементов графического интерфейса. Но создание пользователя и его правильная настройка - это не GUI, это бизнес (или технический) вариант использования, поэтому его следует разместить в сервисе.

`personService.createPersonWithRandomPassword();`
person Ralph    schedule 25.03.2013
comment
Вот почему код теперь перемещен на сервисный уровень. Спасибо. - person Mr Gwent; 25.03.2013