【问题标题】:FlatFileFooterCallback - how to get access to StepExecution For CountFlatFileFooterCallback - 如何访问 StepExecution For Count
【发布时间】:2018-06-19 18:48:57
【问题描述】:

我正在从 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;
}

【问题讨论】:

    标签: spring-boot spring-batch


    【解决方案1】:

    您可以按如下方式实现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 以便根据需要读取数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多