我是Spring Batch的新手。我发现通过使用ExecutionContextPromotionListener
,我可以设置键值对并在以后的步骤中使用它们。
<step id="step1">....</step>
<decision id="decision1">.... />
当我使用Tasklet
代替阅读器时,我做了以下事情:
在我的批处理配置文件中使用预期的密钥创建了ExecutionContextPromotionListener
的bean。
将Listener
注册到我的步骤。
将executionContext
中的键值对放入chunkContext
内的Tasklet
中,如下所示:
现在Decider
可以从步骤执行上下文中读取并决定。
但是,我想根据上一步的Reader做出决定。因此,在我的决定中,如何从Reader中获得价值?还是我的方法是错误的。请提出建议。
答案 0 :(得分:0)
一种简单的方法是,您可以从步骤中使用执行上下文,并将值传递到下一步。
因此,在第一步中,请执行以下操作
// ...
ExecutionContext stepContext = this.stepExecution.getExecutionContext();
stepContext.put("DATA_KEY", dataToShare );
然后在下一步中可以使用执行上下文阅读此内容。
ExecutionContext jobContext = jobExecution.getExecutionContext();
dataToShare = jobContext.get("DATA_KEY");
您只需要管理密钥-用于第一步并在下一步中阅读的密钥