具有FooterCallback和Header回调的Spring Batch自定义Writer

时间:2015-09-17 19:08:08

标签: spring-batch

我试图通过在我的自定义编写器调用中实现头部回调和footercallback来在自定义编写器中添加页眉和页脚。

写入方法成功。但是不会调用write header和writefooter。

public class CustomOAFileItemWriter extends StepExecutionListenerSupport implements  ItemWriter<OAExtract>,FlatFileHeaderCallback,FlatFileFooterCallback{


public void write(List<? extends OAExtract> oaExtractList) throws Exception {
        FileOutputStream fs = new FileOutputStream("C:\\archivedFiles\\out.bin");

}

public void writeHeader(Writer writer) throws IOException {

        System.out.println("Writing Header record");

}

public void writeFooter(Writer writer) throws IOException {

        System.out.println("Writing Footerrecord");
}

拥有Spring批量经验的人可以帮助我吗?

谢谢, RAI

2 个答案:

答案 0 :(得分:0)

您的解决方案与SB理念相反:重用和委派。你没有使用它们。
您不需要自定义ItemWriter,但

  1. 使用自定义页眉/页脚回调
  2. 创建FlatFileItemWriter
  3. 创建您想要的侦听器(我看到您展开StepExecutionListenerSupport)并附加到您的步骤。

答案 1 :(得分:0)

如果查看FlatFileItemWriter的源代码,您将看到它在doOpen()处调用头调用方法,在doClose()处调用footer callback方法。由于您没有使用标准的FlatFileItemWriter,因此您将在FlatFileItemWriter中编写显式代码。

http://grepcode.com/file/repo1.maven.org/maven2/org.springframework.batch/spring-batch-infrastructure/3.0.1.RELEASE/org/springframework/batch/item/file/FlatFileItemWriter.java#FlatFileItemWriter