我的 spring 批处理编写器实现了页脚回调和步骤执行侦听器,如下所示:
public class MyItemWriter implements ItemWriter<MyBean>, FlatFileFooterCallback, StepExecutionListener, ItemStream
该类具有私有 String 属性。
private String one;
我的 footerCallback 和 afterStep 方法如下:
public void writeFooter(Writer writer) throws IOException {
this.one = "this is a test";
}
public ExitStatus afterStep(StepExecution stepExecution) {
File file = new File("myFile");
try {
FileUtils.write(file, this.one);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
很明显,我在 footerCallBack 中设置属性字符串一,然后在 afterStep 方法中使用它。
但是,我在文件中写入了空值。
在调试时,我发现 afterStep 方法在 writeFooter 之前被调用。
但这不是错的吗?只有在 footerCallBack 结束后才应该完成步骤?