我正在使用带批次的弹簧批次。
我从beforeJob
JobExecutionListener
方法获取了作业ID。因为这个春天晚期绑定在读者和作者和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(unique jobid)
但这个带有jobId的输出文件,我没有在编写器(例如:FlatFileItemWriter
)和我的阅读器(FlatFileItemReader
)以及Tasklet生成的输出文件中看到。
但在少数文件中我看到生成的输出文件与jobId。对于那些文件,我已经编写了如下代码。
File f =new File(JobId.fileName("filename"),Listener.jobId);
这里我得到 outputfile_123 但不是在编写器或Tasklet生成的输出文件中。