Spring MVC с JSF 2, это единственный способ? - PullRequest
1 голос
/ 05 апреля 2011

Все примеры, которые я видел до сих пор при интеграции spring / mvc с JSF, используют класс DAO, DAOImp, Service, ServiceImp, а затем JSF ManagedBean и, насколько мне известно, с EJB 3.1 все, что мне нужно, это EJB и JSF ManagedBean. Я не упоминаю сущности. Поэтому, основываясь на моем понимании Spring + JSF, мне нужно: 5 классов и с EJB + JSF мне нужно только два класса. Пожалуйста, поправьте меня, если я ошибаюсь, но если я прав, то в чем преимущество использования пружины с JSF.

Спасибо.

1 Ответ

2 голосов
/ 05 апреля 2011

Вы не правы.- Вы можете пропустить DAO, DAOImpl и ServiceImpl, если хотите внедрить все в классе обслуживания.

Но даже в EJB рекомендуется разделять службу и DAO.

Использование интерфейсов - это своего рода стиль.Если вы используете интерфейсы, по крайней мере, вы можете пропустить их и создать свои сервисы (и Dao), такие как EJB 3.1, свободный от интерфейса EJB ( Я не знаю правильное имя на данный момент ).По крайней мере, есть те же плюсы и минусы для использования интерфейсов в Spring и EJB 3.1.

Резюме: вы можете создавать приложения Spring JSF2 с двумя классами, но рекомендуется разделять хотя бы JSP(просмотр), Служба (EJB) и DAO.


комментарий Spring или JSF : Ральф, приведите мне примерПредположим, у меня есть сущность: Person с id, firstName и lastName. Какой будет код, который мне нужен с точки зрения Spring?

В традиционной архитектуре Spring у вас есть:

  • Класс Person (Entity) - класс с @ Entity
  • PersonDao - интерфейс, обеспечивающий методы загрузки, обработки, удаления и поиска в базе данных для Person
  • PersonDaoImpl - реализацияPersonDao Interface - (@Repository)
  • PersonService - Интерфейс, который обеспечивает деловую функциональность вокруг человека, например, метод создания, который отправляет электронное письмо после создания человека
  • PersonServiceImpl- Реализация интерфейса PersonService - он использует, например, PersonDao и другие сервисы для предоставления своей функциональности (@Service)
  • PersonJSF-Managed Bean - обрабатывает JSF, но не имеет бизнес-функциональности, он использует PersonService (или другой Сервис) для запуска бизнес-функций

Это один из наиболее распространенных архитектурных стилей (не только в Spring).Но даже для этого есть несколько вариантов:

  • как можно вызывать DAO?Все функции Dao должны вызываться через соответствующую службу - или напрямую
  • DAO с интерфейсами или без них?(вам могут понадобиться интерфейсы для вашей тестовой среды Mock Framework?) - (посмотрите на Hades , есть только интерфейс, но в большинстве случаев нет Impl)
  • Службы с илибез интерфейсов?(
  • ...

Кстати: еще один очень интересный стиль архива, это одна шляпа Spring ROO использует: Он имеет только вид(PersonController) и модель (Person), а также все DAO и функциональные возможности сервиса помещены в класс Model. - Это что-то вроде реального OO Design.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...