Фильтр для сервисов с инжектором guice в архитектуре MVC
У нас есть несколько модулей, каждый с несколькими услугами. Мы используем игровую среду, и она хорошо работает с инжектором зависимости от сока.
например,
Для модуля х,
@implementedBy(XI1Impl.class)
interface XI1 {....}
class XI1Impl implements XI1
{....}
Теперь нам нужно добавить общий API проверки перед вызовом какого-либо сервисного API. Самый простой способ - добавить проверку вызова внутри реализации метода для каждого API для каждого сервиса для каждого модуля.
Есть ли лучший способ добавить общую проверку для служб, чтобы потребительское приложение при внедрении какой-либо службы и сначала вызывало любой API службы, должен выполнить вызов проверки.
Имеет ли Guice какие-либо аннотации или какой-либо способ настроить вызов API проверки таким образом, чтобы при внедрении службы он сначала выполнял определенный вызов.
В игровой среде класс фильтра может выполнять ту же работу для контроллера, но я понятия не имею, присутствует ли аналогичная концепция на уровне обслуживания.
Пожалуйста, предложите мне, если возможно написать логику, которая может выполнять общие проверки для всех методов выбранного сервиса, не изменяя реализацию API его сервиса.
Заранее спасибо.
1 ответ
Кажется, вы хотите запустить какой-то кусок кода перед вызовом вашей сервисной функции, попробуйте это.
Вам нужно создать класс и функцию, которая будет содержать вашу функцию, которая будет запускаться каждый раз перед фактическим вызовом службы
class FilterService { def apply(block: => Any => Any) = { println("This block will run before actual function call.") block() } }
Теперь вы должны использовать это в вашем сервисе
class ActualService @Inject()(filterService: FilterService){ def actualFunction(str: String) = filterService.apply { data => // `data` you can use if you are returing anything from your filter service function. println("In actual function calling.") str } }
Надеюсь, поможет:)