所以我有一个自定义类,它扩展了我用来编写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);
}
}
答案 0 :(得分:0)
我不明白你是在使用自定义编写器还是使用自定义编写器。如果您使用自定义(可能是从spring 1开始),您可以通过处理器,阅读器或映射器传递参数来使用您想要的任何内容。如果你想使用Spring编写器,你应该做出孤立的步骤。 提供更多详细信息。