【发布时间】:2018-07-25 07:58:54
【问题描述】:
我已经在 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;
运行作业后,表中没有存储任何值。为什么?
【问题讨论】:
-
您编写的任何代码都不会将信息写入数据库,并且 JobExecution 已经完成,因此 Spring 不会保留您此时对上下文所做的任何更改。
-
如何添加代码才能将信息写入数据库?
标签: spring-boot spring-batch batch-processing