Как узнать из какого TransactionManager данная транзакция создана в Spring 3.0 - PullRequest
1 голос
/ 24 августа 2010

В моей весенней конфигурации у меня есть два менеджера транзакций, определенные для двух разных баз данных. Есть ли способ весной проверить во время выполнения, работает ли данный метод внутри транзакции и, во-вторых (и что более важно), из какого менеджера транзакций была создана эта транзакция.

1 Ответ

2 голосов
/ 24 августа 2010

Вы можете использовать TransactionSynchronizationManager.У него есть несколько способов сообщить вам, активна ли транзакция и как ее назвать.Вы можете получить карту ресурсов (getResourceMap()) и проверить, что внутри.

Все в этом классе равно ThreadLocal, поэтому оно даст вам информацию о текущей транзакции.

Однако,документация гласит:

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

Непонятно почему вам понадобится эта информация.Spring использует декларативные транзакции, поэтому реальный код не должен знать о поведении транзакций (и обрабатывать их).Если вам необходимо различать менеджеры транзакций в коде, значит, что-то не так.

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