我正在使用带批次的 spring 批次 .

我从 JobExecutionListener 获取 beforeJob 方法的作业ID . 因为这个 Spring 天后期绑定在读者和作者和tasklet步骤我没有得到我的所需的读者,作家和tasklet文件的工作ID .

我需要将 jobId 追加到我的输出文件中 . 例如: outputFile_123 (我的唯一jobid)用于所有输出文件 .

Listener.java: 
public class Listener implements JobExecutionListener
  { 
  public static long jobId;
  @Override 
  public void beforeJob(JobExecution jobExecution)
   { 
      jobId = jobExecution.getJobId(); 
    } 


 JobId.java: 
  public static String fileName(String filename, long jobId) 
    { 
       return filename + '_' + jobId; 
     }

我的编写器将生成输出文件:

writer.setResource(newFileSystemResource(JobId.fileName("filename"),Listener.jobId);

所以这个编写器应该写出outputfile_123(唯一的jobid)但是这个带有jobId的输出文件,我没有在writer(ex: FlatFileItemWriter )和我的阅读器( FlatFileItemReader )以及Tasklet生成的输出文件中看到 . 但在少数文件中我看到生成的输出文件与jobId . 对于那些文件,我已经编写了如下代码 .

File f =new File(JobId.fileName("filename"),Listener.jobId);

这里我得到 outputfile_123 但不在编写器或Tasklet生成的输出文件中 .