我希望我的 Spring Batch 模块一次读取多个文件。目前,我的批处理模块一次只能读取一个文件,但我可以从批处理模块中读取多行。我该如何实现这个?
<core type="BatchCreate" class="com.batch.BatchCore" concurrency="1" start="20" stop="80" status="true">
最佳答案
您可以使用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;
}
关于java - 如何在 Spring Batch 模块中一次读取多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48513838/