你好,我正在做 spring batch 项目。
这个项目使用 JdbcCursorItemReader,有时会抛出一些 sql 异常。 现在,我真的不在乎是否会发生这种情况。但是,我想知道抛出什么异常以及什么项目有问题导致异常。
在其他帖子里看到有人建议使用Listener
我实现了以下代码
@Component
class SomeReaderListener implements ItemReadListener<SomeEntity> {
@Override
void before(){}
@Override
void afterRead(SomeEntity item) {
log.info("SomeEntity: ${item}");
}
@Override
void onReadError(Exception ex) {
log.info("SomeEntity: ${ex.getClass}|${ex.getMessage()}");
}
}
在日志中,它按预期记录了所有项目。 但是,如果抛出异常,我想要的只是 item 的日志。 但是我如何访问
item
中的
onReadError
我想到了下面的做法。
afterRead
onReadError
然而,这种方法似乎效率极低。异常不会经常抛出,我有几千条记录。在 arrayList 中添加每条记录并在之后立即将其删除是没有意义的...... 另外,我相信 spring batch 提供了一种更好的方法来做我正在尝试的事情。 有人可以帮我吗?