какой тип pointcut имеет аспект @Transactional? До, после или около? - PullRequest
0 голосов
/ 04 июля 2018

Когда мы собираемся объяснить аспекты Spring, обязательным примером обычно являются транзакции и ведение журнала)))

Итак, мне недавно задали вопрос: какой тип pointcut имеет аспект @Transactional? До, после или около? (любые другие разъяснения приветствуются!)

Спасибо

1 Ответ

0 голосов
/ 04 июля 2018

С точки зрения теоретического вопроса (собеседование, объяснение и т. Д.), Поддержка транзакций может быть реализована как «обходной» совет с точки зрения АОП.

Пояснение:

Рекомендация Around обеспечивает ловушку как до, так и после выполнения фактического кода, и это именно то, что нужно для реализации @Transactional логики.

Перед выполнением «аппликативного» кода Spring откроет транзакцию или, в качестве альтернативы, реализует более сложную логику (например, поддержку вложенных транзакций и т. Д. Это называется распространением; существует также изоляция - все они технически могут быть установлены в качестве параметров @Transactional аннотации)

После выполнения аппликативного кода Spring должен проверить результат и зафиксировать или откатить транзакцию в зависимости от состояния (обычно, если аппликативный код выдает исключение, откат следует выполнить, если все в порядке - commit.

Обратите внимание, что терминология, которую вы использовали в вопросе "какой тип pointcut имеет аспект @Transactional", не совсем точна.

Pointcut в AOP определяет, к каким точкам соединения должен применяться связанный Совет.

Вся логика, которая обрабатывает транзакции, может быть реализована в Совете типа вокруг .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...