首页 文章

Spring Batch Late Binding - 步骤范围或工作范围?

提问于
浏览
1

我正在使用Spring Batch开发一个项目 . 在这个项目中,我使用Spring Batch后期绑定,其中我使用 JobParameters 注入了一个参数(一个将用作SQL阅读器查询条件的字符串) . 目前,我正在使用 @StepScope 进行后期绑定,一切正常 .

我在这里要问的是何时使用 @StepScope 以及何时使用 @JobScope . 我用Google搜索了关于StepScope和JobScope的信息 . 我得到的只是:

一个 . StepScope:Spring Batch将使用spring容器为每个步骤执行实例化该组件的新实例 .

湾JobScope:每个执行作业只有一个实例 .

我只是无法确定何时使用StepScope或JobScope . 有人可以解释一下吗?

1 回答

  • 1

    每个作业由三个步骤组成,即读取步骤,处理步骤和写入步骤 . 如果您使用Step scope创建一个bean,那么您可以从这三个步骤中的每个步骤引用它 - 但是您将在每个步骤中获得该bean的不同实例 . 我创建了一个带有Job范围的bean,然后你可以从这三个步骤中的每个步骤中引用它 - 它将在所有三个上下文中都是相同的实例 .

    因此,如果您需要将一个步骤存储在bean中,以便同一作业中的后续步骤可以访问,那么您希望该bean位于Job范围内 . 如果要保证任何步骤在bean中存储和操作的数据对于该步骤是本地的(对其他步骤是隐藏的),那么您希望该bean位于步骤范围内 .

相关问题