dma*_*a_k 5 java spring multithreading transactions propagation
也许,我做错了什么,但我找不到以下情况的好方法。
我想对一个在下面使用Spring Batch来执行作业的服务进行单元测试。作业通过AsyncTaskExecutor在单独的线程中预先配置来执行。在我的单元测试中,我想:
显然,以上所有内容都应该在一个事务中执行,但不幸的是,事务不会传播到新线程(我理解这背后的基本原理)。
我想到的想法:
Isolation.READ_UNCOMMITTED在作业配置中使用。但这需要两种不同的配置用于测试和生产。我认为最简单的解决方案是在测试执行期间使用 SyncTaskExecutor 配置 JobLauncher - 这样作业就在与测试相同的线程中执行并共享事务。
任务执行器配置可以移动到单独的 spring 配置 xml 文件中。它有两个版本 - 一个是在测试期间使用的 SyncTaskExecutor,另一个是用于生产运行的 AsyncTaskExecutor。
| 归档时间: |
|
| 查看次数: |
11634 次 |
| 最近记录: |