2011-11-29 40 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 –

相關問題