我有一个使用分区器的 Spring Batch 进程。
作为其中的一部分,我对每个分区都有一个步骤过程,并且分区与 itemreader 的不同输入并行运行。在 ItemWriter 部分的步骤中,我将数据连同标题一起写入 CSV 文件。在将数据写入 CSV 文件的过程中,ItemWriter 中定义的标头会两次写入文件,并且这种行为并非一直发生。这是我的 ItemWriter 代码:
public FlatFileItemWriter<Response> writeDateToFile() {
String absolutePath = "/u01/test.csv";
FlatFileItemWriter<Response> writer = new FlatFileItemWriter<>();
//Set output file location
writer.setResource(new FileSystemResource(absolutePath));
//All job repetitions should "append" to same output file
writer.setAppendAllowed(true);
writer.setHeaderCallback(new FlatFileHeaderCallback() {
@Override
public void writeHeader(Writer writer) throws IOException {
writer.write("key,Name");
}
});
//Name field values sequence based on object properties
writer.setLineAggregator(new DelimitedLineAggregator<Response>() {
{
setDelimiter(",");
setFieldExtractor(new BeanWrapperFieldExtractor<Response>() {
{
setNames(new String[] { "Key", "Name" });
}
});
}
});
return writer;
}
我应该怎么做才能防止 ItemWriter 两次写入标题?提前致谢!