我正在阅读Oracle并写入CSV文件。我有一步读取和写入CSV文件。我实现了一个ChunkListener,所以我知道写了多少条记录。
我希望能够编写一个文件预告片,显示写入我文件的记录数。我实现了FlatFileFooterCallback,但无法弄清楚如何从StepExecution(" readCount")获取数据到我的FlatFileFooterCallback。
我想我正在努力学习如何在写作中访问Job,Step范围。
任何示例或链接都会有所帮助。我正在使用[Spring Batch / Boot],所以我都注释了。我可以找到xml示例,所以这个带注释的东西可能更复杂。
ItemWriter<Object> databaseCsvItemWriter() {
FlatFileItemWriter<Object> csvFileWriter = new FlatFileItemWriter<>();
String exportFileHeader = "one,two,three";
StringHeaderWriter headerWriter = new StringHeaderWriter(exportFileHeader);
csvFileWriter.setHeaderCallback(headerWriter);
String exportFilePath = "/tmp/students.csv";
csvFileWriter.setResource(new FileSystemResource(exportFilePath));
LineAggregator<McsendRequest> lineAggregator = createRequestLineAggregator();
csvFileWriter.setLineAggregator(lineAggregator);
csvFileWriter.setFooterCallback(headerWriter);
return csvFileWriter;
}
答案 0 :(得分:2)
您可以按如下方式实施CustomFooterCallback
:
public class CustomFooterCallback implements FlatFileFooterCallback {
@Value("#{StepExecution}")
private StepExecution stepExecution;
@Override
public void writeFooter(Writer writer) throws IOException {
writer.write("footer - number of items read: " + stepExecution.getReadCount());
writer.write("footer - number of items written: " + stepExecution.getWriteCount());
}
}
然后在@Configuration
课程中:
@Bean
@StepScope
public FlatFileFooterCallback customFooterCallback() {
return new CustomFooterCallback();
}
并使用Writer
:
csvFileWriter.setFooterCallback(customFooterCallback());
这样,您可以访问StepExecution
以便根据需要读取数据。