TransactionSynchronizationManager.registerSynchronization方法嵌套后嵌套的逻辑没有执行
时间: 2024-05-28 16:13:41 浏览: 146
嵌入程序问题
`TransactionSynchronizationManager.registerSynchronization()` 方法用于在当前事务的完成时执行一些特定的逻辑,比如清理资源或者发送一些消息。如果你在一个事务中嵌套了另一个事务,那么内部事务的完成会触发一个 `TransactionSynchronization` 的回调,但外部事务的完成并不会触发相同的回调。
如果你需要在外部事务和内部事务完成时都执行一些逻辑,可以考虑使用 Spring 的 `TransactionTemplate` 或者 `PlatformTransactionManager` 的 `invokeWithinTransaction` 方法,这两种方法都能够确保在嵌套事务完成时触发回调。另外,还可以使用 `TransactionSynchronizationManager.isActualTransactionActive()` 方法来判断当前是否处于活动的事务中,从而决定是否需要执行回调。
阅读全文