Работа с несколькими сервисами / контроллерами весной - PullRequest
1 голос
/ 18 апреля 2019

Я работаю с Spring в Java и пытаюсь создать rest-API для моей программы. У меня есть 3 объекта для управления, поэтому у меня также есть 3 класса DAO. Моя проблема в том, что у меня есть 2 типа пользователей (игрок и администратор). у каждого из них есть разные операции, которые он может выполнять с каждой из сущностей / таблиц. Мой вопрос заключается в том, как лучше всего выполнить эти требования. мне нужно иметь 3 службы и 3 контроллера (по одному для каждой из моих сущностей / таблиц) или мне нужно создать 2 службы и 2 контроллера (по одному для каждого типа пользователей) Или, может быть, есть лучший способ, чем я предложил?

EDIT: Еще одна вещь, которая может быть важна, это то, что мне нужно проверить данные в сервисе, процесс проверки проверяет соединения в таблицах, поэтому в каждом сервисе мне также нужно будет иметь объекты Dao для разных сущностей (например, проверка, если новое действие имеет элемент, на котором произошло действие.

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Похоже, у вас, вероятно, будут разные функциональные возможности для разных типов пользователей.Это своего рода точка зрения, что администраторы могут делать то, что не могут делать игроки.Таким образом, будут отдельные сервисные методы администратора, контроллеры, используемые игроками, не должны иметь подключенных к ним сервисов администратора.

Кроме того, это характер транзакций, к которым они обычно не относятся.сущность, обычно у вас есть разные сущности, с которыми вы хотите иметь дело в одной и той же транзакции.Если это так, то иметь разные службы для каждого объекта, вероятно, не имеет смысла.

На уровне контроллера используйте Spring Security, чтобы определить, кто может вызывать какую конечную точку.Я бы организовал конечные точки контроллера в классы в зависимости от того, что общего было достаточно общего, но то, как вы разбили его, не так уж и сложно.

Для сервисов у меня был бы один сервис, реализующий логику для обычных игроков, иодин сервис, реализующий функции администратора.Если кода для какого-либо из них много, я бы подумал о том, чтобы разбить его на отдельные службы, сохранив различие между службами, содержащими методы для обычных игроков и для администраторов.

1 голос
/ 18 апреля 2019

Вы можете взглянуть на безопасность уровня метода с помощью Spring Security. Baeldung имеет довольно хорошее руководство по этой теме. Вы в основном аннотируете определенные методы контроллера, а затем доступ к ним запрещен для пользователей, которые не выполняют условия аннотации. Например Thymeleaf также предлагает интеграцию с Spring Security, так что вы можете сделать кнопки недоступными в вашем HTML, когда у пользователя нет определенной привилегии

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