Как получить экземпляр менеджера транзакций Spring?
-
29-09-2019 - |
Вопрос
Я использую аннотации для обозначения методов, которые должны выполняться в транзакции.
Но в одном месте мне нужно сделать transactionManager.rollback()
вручную, без аннотаций.Как я могу получить transactionManager
объект?
Решение
Если вы хотите отменить текущую транзакцию, вы можете использовать
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
Обратите внимание, что он не откатывает транзакцию немедленно — он устанавливает статус «только откат», поэтому транзакция будет откатана во время попытки фиксации.
В противном случае, если вам нужно программное разграничение транзакций, вы можете использовать
TransactionTemplate
, как описано в 10.6 Программное управление транзакциями.
Также вы можете получить экземпляр PlatformTransactionManager
, но он не получил широкого распространения, поскольку TransactionTemplate
— рекомендуемый подход для программного разграничения транзакций.
Смотрите также:
Другие советы
Если ваш объект настроен на весну, вы можете выключить, чтобы ввести в него TransactionManager ...