对于最新稳定版本,请使用Spring Batch Documentation 6.0.0spring-doc.cadn.net.cn

注册ItemStream其中

步骤必须处理ItemStream在其必要点的回调 生命周期。(欲了解更多关于ItemStream界面,详见ItemStream)。如果步骤失败,这一点至关重要,而且可能 需要重启,因为ItemStream接口是步骤获得 它需要关于执行之间持久状态的信息。spring-doc.cadn.net.cn

如果ItemReader,ItemProcessorItemWriter它本身实现了ItemStream接口,这些会自动注册。其他流也需要 另行注册。这通常发生在间接依赖关系中,例如 代理,被注入读者和作者体内。你可以在通过元素。spring-doc.cadn.net.cn

以下示例展示了如何注册在爪哇语中:spring-doc.cadn.net.cn

Java 配置
@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
	return new StepBuilder("step1", jobRepository)
				.<String, String>chunk(2, transactionManager)
				.reader(itemReader())
				.writer(compositeItemWriter())
				.stream(fileItemWriter1())
				.stream(fileItemWriter2())
				.build();
}

/**
 * In Spring Batch 4, the CompositeItemWriter implements ItemStream so this isn't
 * necessary, but used for an example.
 */
@Bean
public CompositeItemWriter compositeItemWriter() {
	List<ItemWriter> writers = new ArrayList<>(2);
	writers.add(fileItemWriter1());
	writers.add(fileItemWriter2());

	CompositeItemWriter itemWriter = new CompositeItemWriter();

	itemWriter.setDelegates(writers);

	return itemWriter;
}

以下示例展示了如何注册以XML形式表示:spring-doc.cadn.net.cn

XML 配置
<step id="step1">
    <tasklet>
        <chunk reader="itemReader" writer="compositeWriter" commit-interval="2">
            <streams>
                <stream ref="fileItemWriter1"/>
                <stream ref="fileItemWriter2"/>
            </streams>
        </chunk>
    </tasklet>
</step>

<beans:bean id="compositeWriter"
            class="org.springframework.batch.item.support.CompositeItemWriter">
    <beans:property name="delegates">
        <beans:list>
            <beans:ref bean="fileItemWriter1" />
            <beans:ref bean="fileItemWriter2" />
        </beans:list>
    </beans:property>
</beans:bean>

在前面的例子中,合成项目作家不是ItemStream,但它们的 代表们是。因此,两位代表写手都必须明确注册为流 为了让框架正确处理它们。这ItemReader不必是 明确注册为流,因为它是.步骤 现在可以重启,且读写器的状态在 失败事件。spring-doc.cadn.net.cn