代码之家  ›  专栏  ›  技术社区  ›  Haych

完成时Spring批处理作业日志记录

  •  0
  • Haych  · 技术社区  · 6 年前

    我有一个Spring批处理作业,其运行方式如下:

    public void myMethod() throws JobParametersInvalidException, JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException {
        logger.log("Job Starting");
    
        JobParameters param = new JobParametersBuilder()
                .addString("JobID", String.valueOf(System.currentTimeMillis()))
                .toJobParameters();
    
        jobLauncher.run(myJob(), param);
    
        logger.log("Job Finished");
    }
    

    它通过使用 TaskExecutor logger.log 调用作业后立即记录。

    我希望日志记录在 myJob() 已经完成了。

    andThen onComplete 但我什么也没找到。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Joseph McCarthy    6 年前

    你可能想看看 JobExecutionListener 这允许您在作业执行前后进行一些处理。

    public class DoSomethingAroundJob implements JobExecutionListener {
    
      public void beforeJob(JobExecution jobExecution) {
          System.out.println("Called beforeJob().");
      }
    
      public void afterJob(JobExecution jobExecution) {
          System.out.println("Called afterJob().");
      }
    }
    

    @Bean
    public Job myJob(){
        return jobs.get("myJob")           
            .listener(new DoSomethingAroundJob())          
            .build();
    }
    

    您的工作可能还有其他部分,但上面只显示了一个使用JavaConfig添加侦听器的示例。