Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 作业执行侦听器无法在作业执行上下文表中存储值_Spring Boot_Spring Batch_Batch Processing - Fatal编程技术网

Spring boot 作业执行侦听器无法在作业执行上下文表中存储值

Spring boot 作业执行侦听器无法在作业执行上下文表中存储值,spring-boot,spring-batch,batch-processing,Spring Boot,Spring Batch,Batch Processing,我已在JobExecutionListener实现的afterJob()方法中将处理失败和成功的数量存储到作业执行上下文中: public void afterJob(JobExecution jobExecution) { final long jobExecutionId = jobExecution.getId(); final BatchStatus jobStatus = jobExecution.getStatus(); final Execution

我已在JobExecutionListener实现的afterJob()方法中将处理失败和成功的数量存储到作业执行上下文中:

    public void afterJob(JobExecution jobExecution) {
    final long jobExecutionId = jobExecution.getId();
    final BatchStatus jobStatus = jobExecution.getStatus();
    final ExecutionContext jobExecutionContext = jobExecution.getExecutionContext();

    String exitCodeAndMessage = null;
    Map<String, Integer> recordsProcessed = null;

    switch (jobStatus) {
        case COMPLETED:
            //exitCodeAndMessage = getExitCodeAndMessageFromEveryStep(jobExecution);
            recordsProcessed = getExitCodeAndMessageFromEveryStep(jobExecution);
            if (exitCodeAndMessage == null) {
                exitCodeAndMessage = "COMPLETED";
            }
            jobExecutionContext.putString("AfterJob", "Success");
            jobExecutionContext.put("recordsProcessed", recordsProcessed);
            break;
public void afterJob(作业执行作业执行){
final long jobExecutionId=jobExecution.getId();
final BatchStatus jobStatus=jobExecution.getStatus();
final ExecutionContext jobExecutionContext=jobExecution.getExecutionContext();
字符串exitCodeAndMessage=null;
Map recordsProcessed=null;
开关(工作状态){
个案完成:
//exitCodeAndMessage=getExitCodeAndMessageFromEveryStep(作业执行);
recordsProcessed=getExitCodeAndMessageFromEveryStep(作业执行);
如果(exitCodeAndMessage==null){
exitCodeAndMessage=“已完成”;
}
jobExecutionContext.putString(“AfterJob”、“Success”);
jobExecutionContext.put(“recordsProcessed”,recordsProcessed);
打破

运行作业后,表中没有存储任何值。为什么?

作业执行上下文在作业完成后不会保存,而是在每个步骤执行之间保存。因此,您可以使用
StepExecutionListener
并将这些度量添加到
afterStep
方法中。此处的更多详细信息:

e您已将信息写入数据库,并且作业执行已完成,因此Spring此时不会保留您对上下文所做的任何更改。我需要如何添加代码才能将信息写入数据库?