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