Spring批处理中的多个项目编写者

Pra*_*lar 26 java spring spring-batch

我正在编写一个Spring批处理,我正在读取一大块数据,处理它然后我希望将这些数据传递给2个编写器.一个编写器只是更新数据库,而第二个编写器将写入csv文件.

我打算编写自己的自定义编写器并在customItemWriter中注入两个itemWriters,并在customItemWriter的write方法中调用两个item编写器的write方法.这种方法是否正确?是否有任何符合我要求的ItemWriter实现?

提前致谢

Ous*_*ami 19

您可以使用Spring的CompositeItemWriter并将其委托给所有作者.
这是一个配置示例.


小智 13

您不必像示例那样使用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;
}
Run Code Online (Sandbox Code Playgroud)