深入研究 Spring Batch,我想知道如何在作业的不同步骤之间共享数据?
我们可以使用 JobRepository 来实现这一点吗?如果是的话,我们该怎么做?
还有其他方法可以做到/达到同样的目的吗?
请您参考如下方法:
从一个步骤中,您可以将数据放入StepExecutionContext
中。 然后,通过监听器,您可以将数据从 StepExecutionContext
提升到 JobExecutionContext
。
此 JobExecutionContext
在以下所有步骤中可用。
注意:数据必须短。 这些上下文通过序列化保存在 JobRepository
中,并且长度有限(如果我没记错的话,是 2500 个字符)。
因此,这些上下文适合共享字符串或简单值,但不适合共享集合或大量数据。
共享海量数据并不是 Spring Batch 的理念。 Spring Batch 是一组不同的操作,而不是一个巨大的业务处理单元。