我有一个 JobExecutionListener.afterJob() 实现,它打印从所有先前步骤执行中获得的一些信息:
JobExecutionListener.beforeJob():
jobExecution.getExecutionContext().putString("key", "");
步骤1:StepExecutionListener.beforeStep():
ExecutionContext context = stepExecution.getJobExecution().getExecutionContext();
context.putString("key", context.getString("key") + "Hello");
步骤2: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
表中)。如何避免这种情况?
最佳答案
使用外部 bean 保存要在步骤之间传递的数据;此外部 bean 未持久保存,您需要连接到 SB 工件或监听器。
关于java - Spring Batch : How to pass data from StepExecution to JobExecution without persisting it (that is, 不使用 ExecutionContext)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22810776/