6

spring 式言語を使用してジョブ ID を取得したい。試してみ#{jobExecutionContext[jobId]}ましたが、うまくいきません。

4

4 に答える 4

4

SpEL だけを使用すると、ジョブ ID にアクセスする方法がありません。JobExecutionListener を使用して executionContext に追加すると、試していることで利用できるようになります。

于 2013-06-17T17:20:05.630 に答える
3

実際の例は次のようになります。JobExecutionListener クラスは JobExecution にアクセスでき、jobId を executionContext にコピーします。

public class JobIdToContextExecutionListener implements JobExecutionListener {

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

    ..
}

春のコンテキストでは、次のようにSpELを介してjobIdを参照できます

#{stepExecution.jobExecution.jobId}

また

#{jobExecutionContext.jobId}

ここで、遅延バインディングパラメーターの参照に関するルカの回答を参照してください。

于 2014-09-18T08:59:23.580 に答える
1

#{stepExecution.jobExecution.id}または#{stepExecution.jobExecutionId}動作するはずです。

StepContext 、SpEL 式を介した遅延バインディングのために StepExecution へのアクセスを提供します。

于 2015-01-14T22:37:43.223 に答える