由于某些原因,我使用 Spring PlatformTransactionManager 手动执行事务提交和回滚,我需要做的是设置一个钩子,以便在提交事务后发生提交后操作。
通过查看:
void commit(TransactionStatus status) throws TransactionException;
除了假设没有抛出异常之外,我看不出如何确定事务是否成功。
我可以使用 AOP 作为一种选择,但是如何以编程方式执行此操作,也许使用回调方法?
您可以通过更简单的方式获得您想要的东西,TransactionSynchronizationManager http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/transaction/support/TransactionSynchronizationManager.html and TransactionSynchronization http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/transaction/support/TransactionSynchronization.html
With TransactionSynchronizationManager
,您有静态方法来获取有关当前交易的信息,并且您可以注册一个TransactionSynchronization
这允许您在调用时自动执行提交后操作
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization(){
void afterCommit(){
//do what you want to do after commit
}
})
请注意,TransactionSynchronization 是基于每个线程的(这对于基本 Web 请求来说通常不是问题)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)