[英]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.