Spring batch 在spring批处理中从多个目录读取文件

Spring batch 在spring批处理中从多个目录读取文件,spring-batch,Spring Batch,我需要从多个目录中读取文件,然后处理并将数据存储到数据库中。 目前我正在使用chunk multiple resource reader,它可以很好地用于1个目录。 但是现在我必须从多个目录中读取文件。 如何使用spring批处理执行此操作您可以使用MultiResourceItemReader和Step Scope。 使用StepScop后期绑定,可以插入文件位置 MultiResourceItemReader<> multiResourceItemReader = new Mul

我需要从多个目录中读取文件,然后处理并将数据存储到数据库中。 目前我正在使用chunk multiple resource reader,它可以很好地用于1个目录。 但是现在我必须从多个目录中读取文件。
如何使用spring批处理执行此操作您可以使用MultiResourceItemReader和Step Scope。 使用StepScop后期绑定,可以插入文件位置

MultiResourceItemReader<> multiResourceItemReader = new MultiResourceItemReader<>();
    ClassLoader cLoader = this.getClass().getClassLoader();
    ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(cLoader);
    resources = resolver.getResources("file:" + FileLocationAsVaribale);
    multiResourceItemReader.setResources(resources);
    multiResourceItemReader.setDelegate(yourReader());
MultiResourceItemReader MultiResourceItemReader=新的MultiResourceItemReader();
ClassLoader cLoader=this.getClass().getClassLoader();
ResourcePatternResolver解析器=新路径匹配源模式解析器(cLoader);
resources=resolver.getResources(“文件:”+filelocationasvarible);
multiResourceItemReader.setResources(资源);
setDelegate(yourReader());

您可以将MultiResourceItemReader与步骤作用域一起使用。 使用StepScop后期绑定,可以插入文件位置

MultiResourceItemReader<> multiResourceItemReader = new MultiResourceItemReader<>();
    ClassLoader cLoader = this.getClass().getClassLoader();
    ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(cLoader);
    resources = resolver.getResources("file:" + FileLocationAsVaribale);
    multiResourceItemReader.setResources(resources);
    multiResourceItemReader.setDelegate(yourReader());
MultiResourceItemReader MultiResourceItemReader=新的MultiResourceItemReader();
ClassLoader cLoader=this.getClass().getClassLoader();
ResourcePatternResolver解析器=新路径匹配源模式解析器(cLoader);
resources=resolver.getResources(“文件:”+filelocationasvarible);
multiResourceItemReader.setResources(资源);
setDelegate(yourReader());

您应该只需要正确的表达式…@MichaelMinella。如果所有目录没有相同的父目录。如果第一个目录类似于/usr/local/usecase1/dir1,第二个目录类似于/usr/local/usecase2/dir2,并且我们不知道在运行时从外部提供的目录数,那么在这种情况下,创建一个返回资源[]的FactoryBean。这就是MultireaourceTreader所有的用途。非常感谢@MichaelMinellaYou应该只需要正确的表达…@MichaelMinella。如果所有目录没有相同的父目录。如果第一个目录类似于/usr/local/usecase1/dir1,第二个目录类似于/usr/local/usecase2/dir2,并且我们不知道在运行时从外部提供的目录数,那么在这种情况下,创建一个返回资源[]的FactoryBean。这就是MultireaourceTreader所有的用途。非常感谢@米切米内拉