Spring boot 作业执行侦听器无法在作业执行上下文表中存储值
我已在JobExecutionListener实现的afterJob()方法中将处理失败和成功的数量存储到作业执行上下文中: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
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此时不会保留您对上下文所做的任何更改。我需要如何添加代码才能将信息写入数据库?