Spring Batch - FlatFileItemWriter写入文件,关闭它,写入新文件

时间:2017-04-07 15:50:49

标签: java spring-batch

所以我有一个自定义类,它扩展了我用来编写CSV文件的FlatFileItemWriter。基于某些条件,我想用我的第一个文件完成,然后写入一个新文件。有没有办法用FlatFileItemWriter做到这一点?

以下是我的代码示例:

@Override
public void write(List<? extends MyObject> items) throws Exception {
    ExecutionContext stepContext = this.stepExecution.getExecutionContext();
    int currentFileIncrememnt = (int) stepContext.get("currentFileIncrement");
    if(currentFileIncrement== fileIncrement) {
        super.write(items);
    }
    else {
        super.close();
        fileIncrement = currentFileIncrement;
        super.setHeaderCallback(determineHeaderCallback());
        super.setResource(new FileSystemResource("src/main/resources/" + fileIncrement+ ".csv"));
        super.setShouldDeleteIfExists(true);
        DelimitedLineAggregator<MyObject> delLineAgg = new DelimitedLineAggregator<>();
        delLineAgg.setDelimiter(",");
        BeanWrapperFieldExtractor<MyObject> fieldExtractor = new BeanWrapperFieldExtractor<>();
        fieldExtractor.setNames(new String[] {"id", "amount"});
        delLineAgg.setFieldExtractor(fieldExtractor);
        super.setLineAggregator(delLineAgg);
        super.write(items);
    }
}

1 个答案:

答案 0 :(得分:0)

我不明白你是在使用自定义编写器还是使用自定义编写器。如果您使用自定义(可能是从spring 1开始),您可以通过处理器,阅读器或映射器传递参数来使用您想要的任何内容。如果你想使用Spring编写器,你应该做出孤立的步骤。 提供更多详细信息。