Spring Batch:如何将数据从StepExecution传递到JobExecution而不持久化(即不使用ExecutionContext)?

时间:2014-04-02 12:00:51

标签: java spring spring-batch

我有一个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表中)。怎么避免这个?

1 个答案:

答案 0 :(得分:0)

使用外部bean保存您想要在步骤之间传递的数据;这个外部bean没有持久存在,你需要连接到你的SB工件或监听器。