Java 重复spring批处理任务以读取多个文件

Java 重复spring批处理任务以读取多个文件,java,spring,spring-batch,Java,Spring,Spring Batch,我需要用spring批处理多个文件。我使用了MultiResourceItemReader,它可以正常工作,但我得到了以下要求: 在处理文件之前,请进行一些检查,并可能跳过处理文件 当开始读取输入文件、正在写入和完成写入时记录文件 第一个要求很容易满足,但第二个因多种原因而存在问题: 1.写入程序没有对输入资源的引用,它只接收POJO列表 2.块可能包含从多个输入文件读取的POJO 我在想一些解决办法 使用JobExecutionDecider实现包含循环的流。在这种情况下,该步骤将只处理单个文

我需要用spring批处理多个文件。我使用了MultiResourceItemReader,它可以正常工作,但我得到了以下要求:

  • 在处理文件之前,请进行一些检查,并可能跳过处理文件
  • 当开始读取输入文件、正在写入和完成写入时记录文件
  • 第一个要求很容易满足,但第二个因多种原因而存在问题: 1.写入程序没有对输入资源的引用,它只接收POJO列表 2.块可能包含从多个输入文件读取的POJO

    我在想一些解决办法

  • 使用JobExecutionDecider实现包含循环的流。在这种情况下,该步骤将只处理单个文件,循环将遍历所有资源
  • 以某种方式重复该步骤,该步骤将跟踪文件列表
  • 将资源包括在POJO中

  • 我使用的是基于java的配置,关于案例1的文档非常模糊。二,。因为它只解释了如何使用XML。实现这一点的最佳方法是什么?

    对bw使用中的资源进行感知检查;有了一个定制的条目阅读器,我想你可以很容易地解决这个问题。实际上,第二个是很容易的。
    MultiResourceItemReader
    将实际读取委托给
    ResourceAwareItemReaderItemStream
    (这是一个接口)。当它开始读取文件时,调用
    open
    方法;当它结束时,调用
    close
    方法(即使它从一个资源切换到另一个资源)。两者之间的一切基本上都在进行中。您可以非常轻松地实现
    ResourceAwareItemReaderItemStream
    的委托实现,它在
    open
    close
    方法中进行一些日志记录。你有什么特别需要的吗?问题是作者。如果我读取三个1行输入文件,并且chunk size设置为4,那么编写器将收到一个包含三个POJO的列表,每个POJO来自不同的输入文件。在这种情况下,如何记录输入文件已完全写入输出?一种选择是让POJO实现ResourceAware接口,这样每个POJO都会保存一个对其读取文件的引用。问题是将spring批处理依赖项添加到POJO中。我还在想是否有更干净的解决办法