繁体   English   中英

Spring Batch Item Writer侦听器不起作用

[英]Spring Batch Item Writer Listener not Working

我使用spring批处理并实现了项目编写器侦听器。 我的Item Writer Listener类是这样的

@Component
public class SomeItemWriterListener implements ItemWriteListener {

@Override
public void beforeWrite(List<Object> items) throws Exception {
    System.out.println("get here1");

}

@Override
public void afterWrite(List<Object> items) throws Exception {
    System.out.println("get here2");

}

@Override
public void onWriteError(List<Object> items, Exception ex) throws Exception {
    System.out.println("get here3");
}
}

然后,在这样的步骤中使用Java Config对其进行配置

@Autowired
private SomeItemWriterListener writerListener;

@Bean
public Step step(StepBuilderFactory stepBuilderFactory,
    @Qualifier("itemReader")
        ItemReader<SomeItem> reader) {
    return stepBuilderFactory.get("step").listener(
        writerListener).chunk(
        chunkSize).reader(reader).processor(processor).writer(writer).build();
}

但是,beforeWrite,afterWrite不被调用。 当我添加一些错误时,onWriterError也不会被调用。 配置此功能时,我是否错过任何东西?

您正在调用StepBuilderHelper.listener(Object)方法,您只能看到该方法用于基于注释的侦听器。 紧接着,您尝试在步骤级别注册侦听器,而应该在块级别注册侦听器。

@Bean
public Step step(StepBuilderFactory stepBuilderFactory, @Qualifier("itemReader") ItemReader<SomeItem> reader) {
    return stepBuilderFactory.get("step")
            .chunk(chunkSize)
              .reader(reader)
              .processor(processor)
              .writer(writer)
              .listener(writerListener)
            .build();
}

这将调用适当的listener(ItemWriteListener)方法(也可能需要将listener(Object) ItemWriteListener转换为ItemWriteListener接口以调用正确的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM