我有 2 个不同的数据源,一个用于读取,另一个用于写入结果,如下所示:
- ItemReader 应该从 dataSource_1 获取数据。
- ItemWriter 应该将数据写入 dataSource_2。
知道 reader 和 writer 在同一个 tasklet 中。
根据文档,我们可以在 tasklet 中配置单个事务管理器
在这种情况下,我如何在这里使用事务管理器?
我不能依赖容器并且我没有使用 ORM 层(JPA ..),我使用直接 JDBC 驱动程序读取数据库 1 并写入数据库 2。
当前配置:
<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${batch.or.jdbc.driver}" />
<property name="url" value="${batch.or.jdbc.url}" />
<property name="username" value="${batch.or.jdbc.user}" />
<property name="password" value="${batch.or.jdbc.password}" />
</bean>
<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${batch.caux.jdbc.driver}" />
<property name="url" value="${batch.caux.jdbc.url}" />
<property name="username" value="${batch.caux.jdbc.user}" />
<property name="password" value="${batch.caux.jdbc.password}" />
</bean>
<bean id="baseReader" class="org.springframework.batch.item.database.JdbcCursorItemReader">
<property name="dataSource" ref="dataSource1" />
</bean>
<bean id="baseWriter" class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<property name="dataSource2" ref="dataSource2" />
<property name="sql" value="${batch.param.insert}" />
</bean>
我如何使用 Spring Batch 配置 JTA/XA 事务(Atomikos)?