启用和禁用spring批量侦听器

时间:2015-12-02 15:01:26

标签: java spring spring-batch

有没有办法在spring批处理中启用和禁用listeners.i.e而不从上下文中删除配置我应该能够控制。任何人都可以帮我这个

<batch:job id="JobA" restartable="true">
        <batch:step id="abcde">
            <batch:tasklet transaction-manager="transactionManager">
                <batch:chunk reader="Reader" writer="Writer" processor="Processor" commit-interval="10" />
            </batch:tasklet>
        <listeners>
            <listener ref="customStepListener" />
            <listener ref="customItemReaderListener" />
            <listener ref="customItemWriterListener" />
            </listeners>
 </batch:step>
</batch:job>

如果没有从上下文中删除配置,我可以通过任何方式禁止侦听器监听。类似于启用或禁用侦听器的东西。当前我的侦听器用于在读写和步骤级别记录作业详细信息。 dnt想要为某些实例做日志

2 个答案:

答案 0 :(得分:0)

在Spring批处理中没有提供任何内容来禁用已配置的侦听器。

但是你总是可以用

包装你写的任何逻辑
if (enabled) then do
end if

答案 1 :(得分:0)

为什么不使用JavaApi(JobBuilder / StepBuilders)来构建您的工作?根据属性,您可以决定要添加哪些侦听器,哪些不是:

SimpleStepBuilder builder = stepBuilderFactory.get(STEP_NAME)
                .<InputDto, OutputDto>chunk(100)
                .reader(myreader)
                .writer(mywriter);
if (conditionForListener1) {
   builder.listener(mylistener1);
}
if (conditionForListener2) {
   builder.listener(mylistener2);
}

return builder.build();

我知道需要一些时间来熟悉JavaApi来构建SpringBatches。但这种努力是值得的,因为你可以完全动态地建立你的整个工作。