【问题标题】:How can I read multiple files at a time in a Spring Batch module?如何在 Spring Batch 模块中一次读取多个文件?
【发布时间】:2018-01-30 23:04:41
【问题描述】:
我希望我的 Spring Batch 模块一次读取多个文件。目前,我的批处理模块一次只能读取一个文件,但我可以从一个批处理模块中读取多行。我该如何实现?
<core type="BatchCreate" class="com.batch.BatchCore" concurrency="1" start="20" stop="80" status="true">
【问题讨论】:
标签:
java
spring
spring-batch
【解决方案1】:
您可以使用 MultiResourceItemReader 读取多个文件。
下面是相同的java配置
@Bean
public MultiResourceItemReader<POJO> multiResourceItemReader() {
MultiResourceItemReader<POJO> resourceItemReader = new MultiResourceItemReader<POJO>();
ClassLoader cl = this.getClass().getClassLoader();
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(cl);
Resource[] resources = resolver.getResources("file:" + filePath );
resourceItemReader.setResources(resources);
resourceItemReader.setDelegate(reader());
return resourceItemReader;
}
@Bean
public FlatFileItemReader<POJO> reader() {
FlatFileItemReader<POJO> reader = new FlatFileItemReader<POJO>();
reader.setLineMapper(new DefaultLineMapper() {{
setLineTokenizer(new DelimitedLineTokenizer() {{
setNames(new String[]{"id1", "POJO"});
}});
setFieldSetMapper(new BeanWrapperFieldSetMapper<POJO>() {{
setTargetType(POJO.class);
}});
}});
return reader;
}