跳到主要内容

委托模式与步骤注册

QWen Plus 中英对照 The Delegate Pattern and Registering with the Step

请注意,CompositeItemWriter 是 Spring Batch 中常见的委托模式的一个示例。这些委托本身可能实现了回调接口,例如 StepListener。如果它们确实实现了这些接口,并且作为 Job 中的 Step 的一部分与 Spring Batch Core 一起使用,则几乎可以肯定需要手动将它们注册到 Step 中。直接连接到 Step 的读取器、写入器或处理器如果实现了 ItemStreamStepListener 接口,将会被自动注册。但是,由于委托对 Step 而言是未知的,因此需要将它们作为监听器或流(如果合适的话,两者都需要)注入。

下面的示例展示了如何在 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();
}
java