我想要做的是在一个步骤中使用一个或多个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
。
是否有更有效的解决方案?