Spring Batch - 读取一次并写入两次

时间:2014-09-15 14:55:39

标签: spring-batch

我是Spring Batch的新手。 我的要求是我有一个读者通过Web服务调用/数据库调用获取记录,目前我正在将这些记录写入一个表。 现在我需要处理相同的记录(读者读取的记录)并写入另一个表。 这里需要注意的是,第二次写入时存储的第二项是不同类型的第一次写入。

我需要如下

1st Step: - Read items of type A --> Write items of Type A 
2nd Step:-  Read items of type A --> Process to type B ---> Write 10 items of type B

对于同样的上述工作,我需要交易管理。此外,在步骤2中: - 如果可能,我应该使用已在步骤1中读取的数据。

1 个答案:

答案 0 :(得分:0)

Spring Batch定义了独立的处理步骤。每个步骤都负责其输入,处理和输出。因此,我的工作结构如下:

<job id="myJob">
    <step id="step1" next="step2">
        <tasklet>
            <chunk reader="reader" writer="typeAwriter"/>
        </tasklet>
    </step>
    <step id="step2">
        <tasklet>
            <chunk reader="reader" processor="processor" writer="typeBwriter"/>
        </tasklet>
    </step>
</job>

使用上述配置,阅读器将是读取类型A的步骤范围读取器.typeAwriter写出类型A.处理器是将类型A转换为类型B的处理器.typeBwriter写入类型B.处理器返回类型B的列表,typeBwriter需要是一个自定义实现,循环处理器返回的列表(typeBwriter将采用List<List<TypeB>>)。