Spring batch 如果当前批处理步骤输入为空,如何跳到下一批处理步骤

Spring batch 如果当前批处理步骤输入为空,如何跳到下一批处理步骤,spring-batch,Spring Batch,我使用SpringBatch框架创建了一个批处理作业,但是如果读取器返回null,批处理作业将创建一个空文件。无论如何,请跳到下一步,不要创建文件 <batch:job id="MY_BATCH_JOB"> <batch:step id="step1" next="step2"> <batch:tasklet> <batch:chunk reader="itemReader" writer="itemWri

我使用SpringBatch框架创建了一个批处理作业,但是如果读取器返回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>

如果您的
ItemWriter
FlatFileItemWriter
,您可以将属性
shouldDeleteIfEmpty
设置为true,以便在文件为空时不会创建该文件

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


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

<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>
无论哪种方式,它都将进入下一步