2011-11-29 41 views
0

在Spring应用程序中是否可以使用JTA事务注册某种回调?Spring中的JTA回调

我有一些模拟服务是属于另一个通常使用Spring的HttpInvoker访问的应用程序的远程服务。这些模拟服务使用Map等以简单的方式对内存中的数据建模。

单元测试不一定知道哪些服务可能会被使用;测试用例的目标服务可能会在后台使用它们。

单元测试是事务性的,Spring的SpringJUnit4ClassRunner将在每次测试后回滚事务,这意味着单元测试数据库的状态在测试之间保留。

如何回滚此自定义内存中服务实现的状态?如果有办法查明目前是否有交易正在进行,那么我希望能够在交易完成之前执行TransactionManager注册回调的方式。

回答

2

我不认为以这种隐式方式清理测试模拟是一个好主意 - 测试通常会明确执行清理。

但是,如果您真的想要,请看TransactionSynchronizationManager.registerSynchronization()

+0

我写了一篇关于Spring中事务同步的博客文章,以及如何在提交回调后轻松注册http://azagorneanu.blogspot.com/2013/06/transaction-synchronization-callbacks.html –

相关问题