Java 使用带分区器的读卡器的Spring批处理

Java 使用带分区器的读卡器的Spring批处理,java,spring-batch,Java,Spring Batch,我的工作是读取文件并将其写入数据库。为了获得更好的性能,我想分割我的步骤,这样我将一次读取几个文件,所以我使用分区器。这里是相关的配置 Step partitionedStep = stepBuilderFactory.get("partitionStep") .partitioner(buildSingleFileStep(entityManagerFactory, stepBuilder)) .partitioner("flatfileToDbStep", b

我的工作是读取文件并将其写入数据库。为了获得更好的性能,我想分割我的步骤,这样我将一次读取几个文件,所以我使用分区器。这里是相关的配置

Step partitionedStep = stepBuilderFactory.get("partitionStep")
        .partitioner(buildSingleFileStep(entityManagerFactory, stepBuilder))
        .partitioner("flatfileToDbStep", buildPartitioner())
        .taskExecutor(stepTaskExecutor)
        .build();
buildSingleFileStep:

    private TaskletStep buildSingleFileStep(EntityManagerFactory entityManagerFactory, SimpleStepBuilder stepBuilder) {
        return stepBuilder
                .reader(readerFactory.getReader())
                .writer(new SomeWriter())
                .build();
    }
我使用的是标准的MultiResourcePartitioner和MultiResourceItemReader

在作业执行期间,我收到错误java.io.IOException:流已关闭 谷歌搜索之后,我发现读卡器是状态满的,不能在多线程环境中使用。我的问题是如何配置我的读卡器

另外,我尝试了@StepScope注释,但没有成功


谢谢

使用step scope是正确的方法…您能提供您尝试的配置和发生的情况吗?谢谢您的回答。我已经设法在参数上使用@StepScope和@Value注释将文件名延迟绑定到读取器