Spring批处理列表,如果是处理器、分类器和编写器的话



我需要读取csv文件,处理并写入数据库。

场景是

我读了一行数据,这行我有12条记录。对于每一条记录,我都需要做一个过程(所有记录都是相同的过程(在这个过程之后,每个记录都转到不同的表(所以不同的编写器-jdbc(。我可以用弹簧批进行这种加工吗?

在我的处理器中,我可以获取这行数据并转换为12条记录。

但我需要在我的分类器(ClassifierCompositeItemWriter(中做的是,它需要接受列表并返回列表吗?

做不符合逻辑

public class EventClassifier implements Classifier<SpecificEvent, ItemWriter<? super List<Event>>> {
@Override
public ItemWriter<SpecificEvent> classify(List<Event> events) {

for(Event event : events){

if (ReasonEnum.BANKRUP.getReason().equals(event.getScoreReason())) {
return bankrupWriter;
}
if...

}

}
}

由于记录类型的数量是固定的,并且遵循让一件事做一件事并做好的unix哲学,我会为每个类型创建一个编写器,并将这些编写器注册为分类器复合编写器中的委托。

这肯定比同一个作者的几十个if/else语句要好。原因是,当您想为新记录类型添加新写入程序时,您只会为该类型创建一个新写入程序并将其注册到组合中,而不是通过添加额外的if语句来修改单个写入程序。

最新更新