如果当前批步骤输入为空,如何跳到下一个批步骤

How to skip to next batch step if current batch step input is null

我使用 spring 批处理框架创建了一个批处理作业,但是如果 reader return 为 null,则批处理作业将创建一个空文件。无论如何要跳到下一步并且不要创建文件。

<batch:job id="MY_BATCH_JOB">
    <batch:step id="step1" next="step2">
        <batch:tasklet>
            <batch:chunk reader="itemReader" writer="itemWriter"
                processor="itemProcessor" commit-interval="2">
            </batch:chunk>
            <batch:listeners>
                <batch:listener ref="readListener" />
            </batch:listeners>
        </batch:tasklet>
    </batch:step>
    <batch:step id="step2">
        <batch:tasklet>
            <batch:chunk reader="itemReader2" writer="itemWriter2"
                processor="itemProcessor2" commit-interval="2">
            </batch:chunk>
        </batch:tasklet>
    </batch:step>
</batch:job>

如果您的 ItemWriterFlatFileItemWriter,您可以将 属性 shouldDeleteIfEmpty 设置为 true,这样它就不会在文件为空时创建文件。

<bean class="org.springframework.batch.item.file.FlatFileItemWriter">
    <property name="shouldDeleteIfEmpty" value="true"></property>
</bean>

如果您的 ItemWriter 是自定义项目编写器,那么您可以应用自己的逻辑来不创建文件。

无论哪种方式,都会进入下一步。