In my spring configuration I have two transaction managers defined for two different databases. Is there a way in spring to check on runtime whether given method is running inside transaction and secondly (and more importantly) from which transaction manager was this transaction created.
In my spring configuration I have two transaction managers defined for two different databases.
Share
You can use the
TransactionSynchronizationManager. It has a number of methods to tell you whether the transaction is active and what’s its name. You can get the resource map (getResourceMap()) and verify what’s inside.Everything in that class is
ThreadLocal, so it will give you information about the current transaction.However, the documentation says:
It is not clear why you would need that information. Spring uses declarative transactions so that the actual code does not have to know about (and handle) transactional behaviour. If you need to differentiate between transaction managers in the code, then something might be wrong.