Spring Service Bean в качестве сервлета - PullRequest
1 голос
/ 27 марта 2012

В моем приложении есть следующая архитектура.

Клиент (GWT) <- звонки -> Сервлет <- звонки -> Служба <- звонки -> Дао

Я хочу сделать эту архитектуру проще для изменений. Например: когда я хочу вернуть вставленный идентификатор объекта из слоя Dao, потому что он мне нужен в клиенте, я должен обновить также сервис и слой сервлета. Так что для этого небольшого изменения я должен обновить все 3 слоя (3 класса и 3 интерфейса) вносит изменения в 6 местах. Я понимаю, зачем мне слой Дао. Я также понимаю, почему мне нужен уровень обслуживания. Я не понимаю, почему сервисный уровень также не может быть сервлетом. На данный момент все мои сервлеты перенаправляют запрос на сервисный уровень.

Статья в Википедии о сервлетах Java гласит:

Сервлеты чаще всего используются для
1 обработка или сохранение данных, которые были отправлены из HTML-формы
2 предоставляют динамическое содержимое, например результаты запроса к базе данных
3 управлять информацией о состоянии, которой нет в HTTP-протоколе без сохранения состояния

1 и 2 - это просто вызовы базы данных, которые я делаю на своем дао-уровне, а сервисный уровень делает возможной дополнительную бизнес-логику. 3 В настоящее время я не работаю с сессиями. У меня пока нет логина, и я просто играю со своей архитектурой, но я думаю, что сервисный уровень мог бы справиться и с этим.

Я хочу знать, почему и за это изменение архитектуры:

плюсы:

  • Обновление на один слой меньше, если произойдет изменение.

против

  • Уровень обслуживания становится более сложным.

Спасибо за ваши ответы.

1 Ответ

2 голосов
/ 27 марта 2012

Вам нужен уровень сервлета, потому что это то, что позволяет получить доступ к сеансу.

Кроме того, вы не хотите, чтобы ваш сервисный уровень нуждался в том, чтобы знать что-либо о HTTP, поскольку вы хотите иметь возможность повторно использовать сервисный и DAO уровни в других приложениях (например, если вы пишете настольное приложение повторно).-использование этих уровней) и необходимость включать API сервлета там не имеет смысла.

При необходимости вы можете вызывать уровень DAO непосредственно из сервлета для простых случаев, чтобы не дублировать методы в службе и DAOслои.

В API сервлета есть фильтры, которые являются хорошим местом для обеспечения безопасности в вашем веб-приложении.

Вы можете использовать Spring Security , если вы уже используете Springфреймворк для вашего веб-приложения.

...