我有一个JobExecutionListener.afterJob()实现,它打印从以前所有步骤执行中获得的一些信息:
JobExecutionListener.beforeJob():
jobExecution.getExecutionContext().putString("key", "");
step1:StepExecutionListener.beforeStep():
ExecutionContext context = stepExecution.getJobExecution().getExecutionContext();
context.putString("key", context.getString("key") + "Hello");
step2:StepExecutionListener.beforeStep():
ExecutionContext context = stepExecution.getJobExecution().getExecutionContext();
context.putString("key", context.getString("key") + " World!");
JobExecutionListener.afterJob():
System.out.println(jobExecution.getExecutionContext().getString("key"));
// results in "Hello World!"
但是当执行这样的工作时,这些数据将被保留(例如,在BATCH_JOB_EXECUTION_CONTEXT
表中)。怎么避免这个?
答案 0 :(得分:0)
使用外部bean保存您想要在步骤之间传递的数据;这个外部bean没有持久存在,你需要连接到你的SB工件或监听器。