从父母那里继承

如果一组步骤如果配置相似,那么定义一个“父”从中步骤可以继承属性。类似于类Java中的继承,“子”将其元素和属性与父的结合。子节点还覆盖任一父节点步骤.spring-doc.cadn.net.cn

在以下示例中,,具体步骤1,继承于parentstep. 是的 实例化为itemReader,itemProcessor,itemWriter,startLimit=5允许StartIfComplete=true。. 此外,提交间隔5,因为被 覆盖具体步骤1 ,如下示例所示:spring-doc.cadn.net.cn

<step id="parentStep">
    <tasklet allow-start-if-complete="true">
        <chunk reader="itemReader" writer="itemWriter" commit-interval="10"/>
    </tasklet>
</step>

<step id="concreteStep1" parent="parentStep">
    <tasklet start-limit="5">
        <chunk processor="itemProcessor" commit-interval="5"/>
    </tasklet>
</step>

身份证属性仍然需要在作业元素中的步骤中。这是针对两个 原因:spring-doc.cadn.net.cn

  • 身份证当坚持 时,将 作为步长名步执行. 如果作业中引用相同的独立步骤,则会发生错误。spring-doc.cadn.net.cn

抽象

有时,可能需要定义父体这不是完备的配置。 例如,如果读者,作家任务小属性为从a中省略配置,则初始化失败。如果父节点必须是定义时没有一个或多个这些属性,则抽象属性应该被使用。 一抽象 只是扩展,从不实例化。spring-doc.cadn.net.cn

在以下示例中, (摘要ParentStep如果没有被声明为抽象,则不会被实例化。 这, (concreteStep2) 具有itemReader,itemWriter提交间隔=10.spring-doc.cadn.net.cn

<step id="abstractParentStep" abstract="true">
    <tasklet>
        <chunk commit-interval="10"/>
    </tasklet>
</step>

<step id="concreteStep2" parent="abstractParentStep">
    <tasklet>
        <chunk reader="itemReader" writer="itemWriter"/>
    </tasklet>
</step>

合并列表

一些可配置元素步骤是列表,例如<听众/>元素。 如果父母和孩子都一样步骤声明a<听众/>元素,其中子节点的列表覆盖父节点的列表。为了允许子节点添加额外的监听器到 父节点定义的列表,每个列表元素都有一个合并属性。 如果该元素指定了merge=“true”,然后子节点的列表与父列表合并,而不是覆盖它。spring-doc.cadn.net.cn

在以下示例中,“concreteStep3” 是用两个监听器创建的:听众一号听众二号:spring-doc.cadn.net.cn

<step id="listenersParentStep" abstract="true">
    <listeners>
        <listener ref="listenerOne"/>
    </listeners>
</step>

<step id="concreteStep3" parent="listenersParentStep">
    <tasklet>
        <chunk reader="itemReader" writer="itemWriter" commit-interval="5"/>
    </tasklet>
    <listeners merge="true">
        <listener ref="listenerTwo"/>
    </listeners>
</step>