我有一个要求,我需要根据其中我得到文件名的其余调用来处理文件,我将它添加到job参数并在创建bean时使用它。
我正在为(读者,编写者)创建步骤范围Bean并使用job参数。我正在一个新线程中开始工作,因为我正在使用asynchronus task exceutor来启动工作,我的问题是bean将如何进行我们定义const example = ({ title, children, description }) => (
{title}
)
example.propTypes = {
title: PropTypes.string,
}
@StepScope
答案 0 :(得分:36)
弹簧批StepScope
对象是特定步骤唯一的而不是单例。您可能知道,Spring中的默认bean范围是单例。但是通过指定弹簧批处理组件为StepScope
意味着Spring Batch将使用spring容器为每个步骤执行实例化该组件的新实例。
这对于执行参数后期绑定通常很有用,其中参数可以在StepContext
或JobExecutionContext
级别指定,并且需要替换占位符,就像使用文件名的示例一样要求。
使用StepScope
的另一个有用的原因是当您决定在并行步骤中重用相同的组件时。如果组件管理任何内部状态,则重要的是它基于StepScope
,以便一个线程不会损害另一个线程管理的状态(例如,给定步骤的每个线程都有自己的{{1组件)。