在我的JBeret java-batch作业中,我需要将参数从一个步骤传递到下一步。到目前为止,我只通过JobContext.setTransientUserData()找到了做到这一点的方法。
我的问题是:瞬态用户数据方式是最佳实践方式还是有更好的选择?在批处理步骤之间传递参数是否常见,或者在这方面步骤是否应该是自给自足的?
是的,作业上下文瞬态用户数据是在步骤之间传递应用程序数据的标准机制,如批处理规范 (JSR 352) 所定义。此用法是可移植的,适用于所有兼容的实现。
步骤在大多数情况下是自包含的,但步骤也存在于作业中。 因此,一个步骤通常从另一个步骤导出或使用应用程序数据,以协调作业执行。
在 JBeret 中,您可以将 CDI bean 声明为 @JobScoped
,并将其注入到访问共享应用程序状态所需的位置。
有关示例用法,请参阅此 JBeret 测试。
类似的堆栈溢出讨论:如何从请求中放入自定义范围/上下文(JobScoped - 自定义 CDI 范围)特定实例以使其可注入?