我正在使用带批次的 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生成的输出文件中 .