我正在尝试将Springbatch用于必须写入文件的批处理作业(步骤1),并将数据(在文件中发送)写入审计表。(步骤2)
除了将步骤1的输出文件作为步骤2的输入写入DB之外,还有更好的方法吗?
数据无法在Exceution Context中传递,因为它很大。
感谢。
答案 0 :(得分:2)
是的,使用CompositeItemWriter
从它的javadoc
按固定顺序调用ItemWriters集合。
只需创建一个CompositeItemWriter
传递代理(您的真实编写者:一个用于文件,一个用于审计表)并将它们注册为流以允许重新启动。
<bean id="fileWriter" class="path.to.filewriterClass" />
<bean id="auditTableWriter" class="path.to.auditawriterClass" />
<bean id="compositeWriter" class="path.to.CompositeItemWriter>
<property name="delegates">
<list>
<bean ref="fileWriter" />
<bean ref="auditTableWriter />
</property>
</bean>
<step name="step1">
<tasklet>
<chunk reader="path.to.readerClass" writer="compositeWriter" />
<streams>
<stream ref="fileWriter" />
<stream ref="auditTableWriter" />
</streams>
</tasklet>
</step>
有关其他信息,请参阅official doc,并查看大量示例!