How to get job id using spring expression language?

后端 未结 4 1847
梦如初夏
梦如初夏 2021-01-13 10:42

I want to get job id using spring expression language. I tried #{jobExecutionContext[jobId]} but it does not work.

相关标签:
4条回答
  • 2021-01-13 10:47

    Using SpEL alone, there is no way to access the job id. You could use a JobExecutionListener to add it to the executionContext and then it would be available via what you are trying.

    0 讨论(0)
  • 2021-01-13 10:52

    #{stepExecution.jobExecution.id} or #{stepExecution.jobExecutionId} should work though.

    The StepContext does provide access to the StepExecution for late binding via SpEL expressions.

    0 讨论(0)
  • 2021-01-13 10:53

    Use scope="step" and then an expression in your query (or its parameters): #{stepExecution.jobExecution.id} (the root of the expression is a StepContext).

    0 讨论(0)
  • 2021-01-13 11:08

    A worked example would look like this. Your JobExecutionListener class has access to the JobExecution and it copies the jobId to the executionContext.

    public class JobIdToContextExecutionListener implements JobExecutionListener {
    
        public void beforeJob(JobExecution jobExecution) {
            long jobId = jobExecution.getJobId();
            jobExecution.getExecutionContext().put("jobId",jobId);
        }
    
        ..
    }
    

    In your spring context, you can then reference the jobId via SpEL like

    #{stepExecution.jobExecution.jobId}
    

    or

    #{jobExecutionContext.jobId}
    

    See Luca's answer on referencing late-binding parameters here.

    0 讨论(0)
提交回复
热议问题