Spring 两次不同下载的批次

Spring Batch for two different downloads

我需要为两种不同的下载类型实施 Spring 批处理。根据用户类型,我想为他们提供两种不同的下载结果。我从同一个地方读取它,以相同的方式处理它,但文件内容会有所不同。

我决定为此做两份不同的工作。

问题: 是否可以为这两个作业重用 Reader 和处理器 Bean?

这是可能的,而且非常简单,您只需在作业定义中声明 reader 和处理器 bean,并在您的步骤中通过它们的 ID 调用它们。

下面是 reader 的示例。

Bean 定义:

<bean id="myReader" class="org.springframework.batch.item.file.FlatFileItemReader">
    <property name="resource" value="${resourceLocation} />
</bean>

在您的步骤中引用 bean:

<batch:step>
    <batch:tasklet>
        <batch:chunk reader="myReader" />
    </batch:tasklet>
</batch:step>

您可以多次调用此 reader。