春季批次中的多个项目编写器

2022-09-01 06:05:28

我目前正在编写一个Spring批处理,我正在读取大量数据,对其进行处理,然后我希望将此数据传递给2个编写器。一个写入器将简单地更新数据库,而第二个写入器将写入 csv 文件。

我计划编写自己的自定义编写器,并在 customItemWriter 中注入两个 itemWriter,并在 customItemWriter 的写入方法中调用这两个项编写器的写入方法。这种方法是否正确?是否有任何 ItemWriter 实现可以满足我的要求?

提前致谢


答案 1

您可以使用Spring的CompositemWriter并将所有作家委托给它。
下面是一个配置示例


答案 2

您不必像示例那样使用 xml。如果代码的其余部分使用注释,则只需执行以下操作即可。

public ItemWriter<T> writerOne(){
    ItemWriter<T> writer = new ItemWriter<T>();
    //your logic here
    return writer;
}

public ItemWriter<T> writerTwo(){
    ItemWriter<T> writer = new ItemWriter<T>();
    //your logic here
    return writer;
}

public CompositeItemWriter<T> compositeItemWriter(){
    CompositeItemWriter writer = new CompositeItemWriter();
    writer.setDelegates(Arrays.asList(writerOne(),writerTwo()));
    return writer;
}

推荐