Я проходил несколько уроков Spring/AOP и несколько ознакомился с соответствующими понятиями.Spring/AOP: Лучший способ реализовать журнал действий в базе данных
Теперь, следуя моим требованиям, мне нужно создать реализацию «Реестр событий», которая сохранит действия пользователя, зарегистрированного в БД, который может варьироваться от подачи заявки на услугу или создания новых пользователей в случае Admin
пользователей, и т.д. при вызове любого метода, имеющего аннотацию (скажем @ActivityLog
), эта информация должна сохраняться в виде actorId
, actionComment
, actionTime
, actedUponId
... и т.д.
Теперь, если я создаю класс POJO (который сопоставляется с таблицей ActivityLog
в БД) и хочет сохранить эти данные изнутри Advice
(предпочтительно используя ту же транзакцию, что и метод, метод использует аннотацию @Transactional
), как я фактически заполняю переменные в этом POJO? Вероятно, я могу получить от объекта сеанса & actionTime
может просто быть new Date()
, но как насчет динамических значений для actionComment
/actedUponId
?
Любая помощь будет блестящей! (Кстати, у меня есть требование, чтобы не использовать Hibernate перехватчики.)
Спасибо за ответ. Интересный подход, но actionComment может исходить от пользователей! Также хотелось добавить, что я предполагаю, что я должен использовать After Advice (хотя не уверен, что он будет использовать ту же транзакцию, что и оригинальный метод)! Спасибо, Sumit – Sumit
BTW actedUponId должен быть пользователем пользователя. Операция (добавление, удаление и т. Д.) Выполняется администратором. – Sumit
Если используется функция spring-security, главный/пользователь должен быть доступен с 'SecurityContextHolder..getUserPrincipal()'. Как вы планируете получить userId? –