Spring Batch - 列表中的一个或多个ItemWriter

时间:2015-12-09 13:31:34

标签: java spring-batch

我想要做的是在一个步骤中使用一个或多个ItemWriter,具体取决于批量配置。

我需要的是经典CompositeItemWriter(称为所有作家)和经典ClassifierCompositeItemWriter(称为仅一个)之间的行为作家);这种行为可以让我调用一个或多个编写器,并为每个指定为委托的编写者提供外部条件。

我想到的解决方案之一是使用ClassifierCompositeItemWriter,其中包含作为委托的所有可能的作者组合的列表。 要创建编写器的组合,我需要根据需要声明尽可能多的CompositeItemWriter(2 n - (n + 1),其中n是“的总数”真正的“作家”。然后Classifier将被定制以返回格式化为位字的代码,每个位是编写器的statuts(激活可能取决于属性配置或jobParameters等)。

以下是2位作家的例子:

<bean class="ClassifierCompositeItemWriter">
    <property name="matcherMap">
        <map>
            <entry key="10">
                <bean ref="writer1" />
            </entry>
            <entry key="01">
                <bean ref="writer2" />
            </entry>
            <entry key="11">
                <bean ref="writer1and2" />
            </entry>
        </map>
    </property>
</bean>

<bean id="writer1" />
<bean id="writer2" />

<bean id="writer1and2" class="CompositeItemWriter">
    <property name="delegates">
        <bean ref="writer1" />
        <bean red="writer2" />
    </property>
</bean>

此解决方案实际上正在运行,但随着“真实”作者数量的增加,需要大量CompositeItemReader

是否有更有效的解决方案?

0 个答案:

没有答案