我应该使用JobExecution.beforeJob()还是Tasklet?

时间:2018-07-04 19:16:07

标签: spring-batch

我的Spring Batch应用程序首先将zip文件提取为单个文件,然后再将其发送以进行分步处理。

为此任务在Tasklet上使用JobExecutionListener.beforeJob()有什么利弊?

1 个答案:

答案 0 :(得分:1)

在以下情况下,我将使用Listener

  1. 支持功能不是主要任务,例如
    • 记录
    • 报告

我问自己一个问题,如果我删除监听器,会给工作造成任何问题吗?如果回答“否”,则表示侦听器的设计正确。

  1. 在外部事务中工作。下面是侦听器/方法在外部事务中

    • beforeJob
    • afterJob
    • 之前步骤
    • afterStep
    • afterChunk
  2. 在事务内部工作。下面是侦听器/方法在事务内部

    • beforeChunk
    • beforeRead / afterRead / onReadError
    • beforeProcess / afterProcess / onProcessError
    • beforeWrite / afterWrite / onWriteError
    • onSkipInRead / onSkipInWrite / onSkipInProcess
  3. 我们希望通过将异常标记为Not-Rollback-Exception

  4. 来在发生异常时不回滚

  5. 初始化一些缓存或配置文件数据,这些数据将在您的工作中重复使用