У меня следующая проблема.В моем приложении каждый пользователь может выполнять действия как через веб-клиент, так и по электронной почте.Каждое действие (метод в классе контроллера) должно неявно хранить уведомление во внешнем хранилище значений ключей (я использую Redis). Кроме того, если действие было выполнено по электронной почте, исполнитель должен быть уведомлен о состояниидействие (успех / неудача) также по электронной почте.Основная проблема, с которой я сталкиваюсь, заключается в том, как спроектировать всю структуру с максимальным разделением интересов.Например, я не хочу, чтобы сами методы контроллера делали что-либо с сохранением уведомления / отправкой ответного электронного письма.
Изначально я хотел использовать AOP и просто украсить свои методы с помощью @Action ("actionType"), к сожалению, мне также нужно было бы знать, кто является отправителем.Насколько я знаю, я не могу присваивать значения атрибутам аннотаций во время выполнения, поэтому мне пришлось подумать о другом.
Второй подход заключается в использовании интерцептора «вокруг», для остановки выполнения метода, получения текущего пользователя (из пользовательской службы в рамках сеанса), но, опять же, это будет работать для веб-контроллера.только потому, что класс обработки почты не имеет состояния и не знает о такой концепции, как currentUser (единственный способ, которым я могу получить отправителя, - через параметр электронной почты, с которым он поставляется, каждый раз, когда приходит новая почта)
Полагаю, простейшим подходом было бы явное обращение к службе уведомлений из каждого метода, для которого требуется уведомление (как в контроллере веб-запросов, так и в почтовом процессоре), но опять-таки это привело бы к тому, что методы узналинемного слишком много.
Есть предложения?