在Spring批处理中的ItemWriter发生异常后,有没有办法在数据库中保留一些数据?

时间:2018-04-12 08:01:31

标签: spring spring-batch

我希望在ItemWriter步骤中发生异常后保留一些数据。但是,如果我不是不正确的话,在这种情况下会发生回滚,所以这种持久的逻辑不会起作用。有没有办法实现这个目标?

现在,我正在实现itemWriteListener,所有持久化逻辑都写在了onWriteError方法中。该逻辑仅涉及将某些实体的状态更改为错误。

2 个答案:

答案 0 :(得分:0)

您希望使用不参与交易的单独连接。例如,将DataSource注入您的侦听器并使用独立连接构建您自己的JdbcTemplate。通过这样做,不应回滚写入。

答案 1 :(得分:0)

如果您用

标记onWriteError方法
@Transactional(propagation = Propagation.REQUIRES_NEW)

...也可以吗?