此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Batch 文档 5.1.2spring-doc.cn

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Batch 文档 5.1.2spring-doc.cn

请注意,这是委托模式的一个示例,即 常见于 Spring Batch 中。委托本身可以实现回调接口 如。如果它们这样做,并且它们是否与 Spring 结合使用 Batch Core 作为 a 中的一部分,那么它们几乎肯定需要 手动注册到 .直接 如果 wire 实现 或 接口,则会自动注册。但是,由于 , 它们需要作为侦听器或流注入(或两者兼而有之,如果合适)。CompositeItemWriterStepListenerStepJobStepStepItemStreamStepListenerStepspring-doc.cn

以下示例显示了如何在 Java 中将委托作为流注入:spring-doc.cn

Java 配置
@Bean
public Job ioSampleJob(JobRepository jobRepository, Step step1) {
	return new JobBuilder("ioSampleJob", jobRepository)
				.start(step1)
				.build();
}

@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
	return new StepBuilder("step1", jobRepository)
				.<String, String>chunk(2, transactionManager)
				.reader(fooReader())
				.processor(fooProcessor())
				.writer(compositeItemWriter())
				.stream(barWriter())
				.build();
}

@Bean
public CustomCompositeItemWriter compositeItemWriter() {

	CustomCompositeItemWriter writer = new CustomCompositeItemWriter();

	writer.setDelegate(barWriter());

	return writer;
}

@Bean
public BarWriter barWriter() {
	return new BarWriter();
}

下面的示例演示如何在 XML 中将委托作为流注入:spring-doc.cn

XML 配置
<job id="ioSampleJob">
    <step name="step1">
        <tasklet>
            <chunk reader="fooReader" processor="fooProcessor" writer="compositeItemWriter"
                   commit-interval="2">
                <streams>
                    <stream ref="barWriter" />
                </streams>
            </chunk>
        </tasklet>
    </step>
</job>

<bean id="compositeItemWriter" class="...CustomCompositeItemWriter">
    <property name="delegate" ref="barWriter" />
</bean>

<bean id="barWriter" class="...BarWriter" />