Как я могу перехватывать вызовы сервисного уровня, даже при любой обработке пружинных транзакций?
До 3-го уровня мы могли бы написать точку, как показано ниже:
@Pointcut("execution(public * com.mycompany..*Service.*(..))")
void publicServiceMethod() {}
... и захватить метод обслуживания, включая транзакцию Spring. Благодаря этому стало возможным фиксировать ошибки, связанные с базой данных, или любую ошибку во время сеанса гриппа sh, которая может произойти после вызова метода службы.
Я использовал это, чтобы скрыть неожиданные подробности исключений времени выполнения из-за пределов службы layer.
На Grails 3 кажется, что "оборачивание" транзакции Spring было перемещено на один уровень вверх. Вероятно, из-за переписывания в AST.
Решение не обязательно должно быть с аспектами. Другие методы проксирования будут приняты.