Spring batch 如何使用spring表达式语言获取作业id?
我想使用spring表达式语言获取作业id。我尝试了Spring batch 如何使用spring表达式语言获取作业id?,spring-batch,Spring Batch,我想使用spring表达式语言获取作业id。我尝试了#{jobExecutionContext[jobId]},但它不起作用。仅使用SpEL无法访问作业id。您可以使用JobExecutionListener将其添加到executionContext,然后通过您正在尝试的内容将其可用。一个工作示例如下所示。JobExecutionListener类可以访问JobExecution,并将jobId复制到executionContext public class JobIdToContextExec
#{jobExecutionContext[jobId]}
,但它不起作用。仅使用SpEL无法访问作业id。您可以使用JobExecutionListener将其添加到executionContext,然后通过您正在尝试的内容将其可用。一个工作示例如下所示。JobExecutionListener类可以访问JobExecution,并将jobId复制到executionContext
public class JobIdToContextExecutionListener implements JobExecutionListener {
public void beforeJob(JobExecution jobExecution) {
long jobId = jobExecution.getJobId();
jobExecution.getExecutionContext().put("jobId",jobId);
}
..
}
在spring上下文中,您可以通过SpEL like引用jobId
#{stepExecution.jobExecution.jobId}
或
请参阅。{stepExecution.jobExecution.id}
或{stepExecution.jobExecutionId}
应该可以工作
确实提供了通过SpEL表达式访问StepExecution以进行后期绑定的功能。使用scope=“step”,然后在查询中使用一个表达式(或其参数):{StepExecution.jobExecution.id}(表达式的根是StepContext)。@MichaelMinella这个答案很旧,我认为值得更新。
{jobExecution.jobInstance.instanceId}
和{jobExecution.jobId}
都为我提供了实例id的值。这应该是实际接受的答案。这在spring批处理文档及其工作中也有记录。
#{jobExecutionContext.jobId}