org.springframework.jdbc.datasource.DataSourceTransactionManager和有什么不一样 和org.springframework.batch.support.transaction.ResourcelessTransactionManager
<bean id="batchTransactionManager" class=
"org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
<bean id="batchJobLauncher"
class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name="jobRepository" ref="batchJobRepository" />
<property name="taskExecutor">
<bean class="org.springframework.core.task.SimpleAsyncTaskExecutor" />
</property>
</bean>
在上面的代码中使用无资源事务管理器是否正确? 还是应该使用datasourcetransactionmanager? 有什么区别以及何时使用它们?
答案 0 :(得分:1)
Spring Batch要求PlatformTransactionManager
在驱动工作并与工作存储库进行交互时应用其事务语义。
ResourcelessTransactionManager
是PlatformTransactionManager
的No-Op实现,这意味着将不存在针对事务资源进行的实际交易(因此,术语Resourceless
)。当您确实不需要(或关心)事务行为时,例如在测试/原型中或使用非事务性作业存储库时,可以使用它。该类由Spring Batch提供,不建议用于生产。
DataSourceTransactionManager
来自Spring框架,用于根据JDBC数据源(可以是真实数据库或内存数据库)驱动事务。该事务管理器通常在Spring Batch中用于将批处理元数据存储在关系数据库中作为作业存储库。