Как обойти услугу (включая ее транзакцию) на Grails 3 или 4? - PullRequest
0 голосов
/ 18 марта 2020

Как я могу перехватывать вызовы сервисного уровня, даже при любой обработке пружинных транзакций?

До 3-го уровня мы могли бы написать точку, как показано ниже:

@Pointcut("execution(public * com.mycompany..*Service.*(..))")
void publicServiceMethod() {}

... и захватить метод обслуживания, включая транзакцию Spring. Благодаря этому стало возможным фиксировать ошибки, связанные с базой данных, или любую ошибку во время сеанса гриппа sh, которая может произойти после вызова метода службы.

Я использовал это, чтобы скрыть неожиданные подробности исключений времени выполнения из-за пределов службы layer.

На Grails 3 кажется, что "оборачивание" транзакции Spring было перемещено на один уровень вверх. Вероятно, из-за переписывания в AST.

Решение не обязательно должно быть с аспектами. Другие методы проксирования будут приняты.

...