Как получить экземпляр диспетчера транзакций Spring? - PullRequest
3 голосов
/ 08 ноября 2010

Я использую аннотации для пометки методов, которые должны выполняться в транзакции.

Но в одном месте мне нужно сделать transactionManager.rollback() вручную, без аннотации.Как я могу получить transactionManager объект?

Ответы [ 2 ]

12 голосов
/ 08 ноября 2010

Если вы хотите откатить текущую транзакцию, вы можете использовать

    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

Обратите внимание, что она не откатывает транзакцию сразу - она ​​устанавливает статус «только откат», поэтому транзакция будет откатыватьсяво время попытки совершить.


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

Также вы можете получить экземпляр PlatformTransactionManager, но он не используется широко, поскольку TransactionTemplate является рекомендуемым подходом для программного демаракционирования транзакций.

См. также:

0 голосов
/ 16 декабря 2010

Если ваш объект сконфигурирован Spring, вы, конечно, можете добавить в него менеджера транзакций ...

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