我正在创建一个固定长度的文件,我必须将读入的文件数量附加到页脚。我需要访问 stepExecution 以获取写入计数,我遵循了这个FlatFileFooterCallback - how to get access to StepExecution For Count。StepExecution 为空??
FlatFileFooterCallback
公共类 LexisNexisRequestFileFooter 实现 FlatFileFooterCallback {
@Value("#{StepExecution}")
private StepExecution stepExecution;
int totalItemsWritten = 0;
@Override
public void writeFooter(Writer writer) throws IOException {
System.out.println(stepExecution.getWriteCount());
String julianDate = createJulianDate();
String SAT = "##!!SAT#"+julianDate+totalItemsWritten+" \r\n";
String SIT = "##!!SIT#"+julianDate+totalItemsWritten+" \r\n";
String footer = SAT+SIT;
writer.write(footer);
}
}
配置文件
@Bean
@StepScope
public FlatFileFooterCallback customFooterCallback() {
return new LexisNexisRequestFileFooter();
}
写入器文件
// Create writer instance
FlatFileItemWriter<LexisNexisRequestRecord> writer = new FlatFileItemWriter<>();
LexisNexisRequestFileFooter lexisNexisRequestFileFooter = new LexisNexisRequestFileFooter();
writer.setFooterCallback(lexisNexisRequestFileFooter);
// Set output file location
writer.setResource(new FileSystemResource("homeData.txt"));
// All job reptitions should append to same output file
writer.setAppendAllowed(true);
writer.setEncoding("ascii");