委託模式和向 Step 註冊

請注意,CompositeItemWriter 是委託模式的一個示例,這在 Spring Batch 中很常見。委託本身可能會實現回撥介面,例如 StepListener。如果它們確實實現了,並且與 Spring Batch Core 一起作為 Job 中的 Step 的一部分使用,那麼它們幾乎肯定需要手動向 Step 註冊。直接連線到 Step 的讀取器、寫入器或處理器,如果它實現了 ItemStreamStepListener 介面,則會自動註冊。但是,由於委託對於 Step 來說是未知的,因此它們需要作為監聽器或流(或兩者,如果適用)注入。

  • Java

  • XML

以下示例展示瞭如何在 Java 中將委託作為流注入

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(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 中將委託作為流注入

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" />
© . This site is unofficial and not affiliated with VMware.