gpt4 book ai didi

java - 我可以为所有步骤定义一个通用的 StepListener 吗? Java 批处理作业 API

转载 作者:行者123 更新时间:2023-11-30 05:27:43 25 4
gpt4 key购买 nike

我编写了一个JobStepListener,需要在每个步骤之前和之后执行。然而,每个作业都包含许多步骤(超过 1000 个步骤),并且在每个步骤中插入监听器会很乏味,特别是因为我有多个作业需要此功能。因此,不要像这样编写每个步骤:

<step id="step_001" next="step_002">
<listeners>
<listener ref="jobStepMonitoring"/>
</listeners>
<batchlet ref="batchJob"/>
</step>
<step id="step_002" next="step_003">
<listeners>
<listener ref="jobStepMonitoring"/>
</listeners>
<batchlet ref="batchJob"/>
</step>
<step id="step_003">
<listeners>
<listener ref="jobStepMonitoring"/>
</listeners>
<batchlet ref="batchJob"/>
</step>

有没有一种方法可以像定义作业监听器一样一次完成但针对每个步骤?

    <listeners>
<listener ref="jobStepMonitoring"/>
</listeners>
<step id="step_001" next="step_002">
<batchlet ref="batchJob"/>
</step>
<step id="step_002" next="step_003">
<batchlet ref="batchJob"/>
</step>
<step id="step_003">
<batchlet ref="batchJob"/>
</step>

最佳答案

Spring 的Bean definition inheritance就是您正在寻找的。您需要定义一个抽象步骤定义,在其中声明公共(public)监听器:

<step id="parent_step" abstract="true">
<listeners>
<listener ref="jobStepMonitoring"/>
</listeners>
</step>

然后每个步骤都可以从父步骤继承:

<step id="step_001" next="step_002" parent="parent_step">
<!-- concrete step definition here -->
<!-- the listener will be inherited and can be overridden if needed -->
</step>

关于java - 我可以为所有步骤定义一个通用的 StepListener 吗? Java 批处理作业 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58218125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com