Spring 逐个文件批处理 reader

Spring Batch reader file by file

我正在开发一个 Spring 网络应用程序,使用 spring 引导和 spring 批处理框架。

我们有一组复杂且不同的 json 文件,我们需要:

  1. 读取每个文件
  2. 略微修改其内容
  3. 最终将它们存储在mongodb。

问题:对这个任务使用spring batch有意义吗?正如我在教程示例等中看到的那样,spring 批处理是逐行处理的正确工具,但是逐个文件呢?

我对编写器 (MongoItemWritter) 和处理器没有问题,但我不知道如何实现 reader。

谢谢!

是的 你可以明确地使用 Spring 批处理。 Reader 的商品可以是 File

 public class CustomItemReader implements InitializingBean{

    private List<File> yourFiles= null;

    public File read() {
        if ((yourFiles!= null) && (yourFiles.size() != 0)) {
            return yourFiles.remove(0);
        }
        return null;
    }

    //Reading Items from Service
    private void reloadItems() {
        this.yourItems= new ArrayList<File>();
       // populate the items
     }


    @Override
    public void afterPropertiesSet() throws Exception {
        reloadItems();
    }
}

自定义处理器:

public class MyProcessor implements ItemProcessor<File, File> {
@Override
public File process(File arg0) throws Exception {
   // Apply any logic to your File before transferring it to the writer
 return arg0;
 }
}

还有一个自定义作家:

  public class MyWriter{
      public void write(File file) throws IOException {
         }
   }