Java 启用和禁用spring批处理侦听器

Java 启用和禁用spring批处理侦听器,java,spring,spring-batch,Java,Spring,Spring Batch,在SpringBatch中是否有任何方法可以启用和禁用侦听器。也就是说,在不从上下文中删除配置的情况下,我应该能够控制它。有人可以帮我吗 <batch:job id="JobA" restartable="true"> <batch:step id="abcde"> <batch:tasklet transaction-manager="transactionManager"> <b

在SpringBatch中是否有任何方法可以启用和禁用侦听器。也就是说,在不从上下文中删除配置的情况下,我应该能够控制它。有人可以帮我吗

<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>


在不从上下文中删除配置的情况下,是否有任何方法可以禁用侦听器。类似于启用或禁用侦听器的标志。目前,我的侦听器用于在读写和步骤级别记录作业详细信息。我不想对某些实例进行日志记录。

spring build中未提供任何内容将禁用已配置侦听器的批处理

然而,你总是可以包装你写的任何逻辑

if (enabled) then do
end if

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

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();
simplestbuilder builder=stepBuilderFactory.get(步骤名称)
.chunk(100)
.reader(myreader)
.作者(mywriter);
如果(Listener1的条件){
监听器(mylistener1);
}
if(Listener2的条件){
监听器(mylistener2);
}
返回builder.build();

我知道要熟悉JavaApi来构建SpringBatchs需要一些时间。但是这样做是值得的,因为您可以完全动态地构建整个作业。

启用和禁用是什么意思?请提供一些上下文代码。我已经编辑了我的问题。您可以检查@hdost,@RafikBELDIBut,这实际上不会阻止侦听器进行侦听。它只是阻止侦听器方法正确地执行其工作@saifudin这是正确的。如果不从配置中删除侦听器,则无法禁用它