0

我有一个使用分区器的 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 两次写入标题?提前致谢!

4

0 回答 0