|
对于最新稳定版本,请使用Spring Batch Documentation 6.0.0! |
注册ItemStream其中步
步骤必须处理ItemStream在其必要点的回调
生命周期。(欲了解更多关于ItemStream界面,详见ItemStream)。如果步骤失败,这一点至关重要,而且可能
需要重启,因为ItemStream接口是步骤获得
它需要关于执行之间持久状态的信息。
如果ItemReader,ItemProcessor或ItemWriter它本身实现了ItemStream接口,这些会自动注册。其他流也需要
另行注册。这通常发生在间接依赖关系中,例如
代理,被注入读者和作者体内。你可以在步通过流元素。
-
Java
-
XML
以下示例展示了如何注册流在步在爪哇语中:
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形式表示:
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不必是
明确注册为流,因为它是步.步骤
现在可以重启,且读写器的状态在
失败事件。