如何添加 Quartz JobListener

How to add Quartz JobListener

我正在编写一个 java/spring 库以包含在其他使用 quartz 的项目中。我需要它在执行每个任务之前记录一些东西。

我有一个简单的 JobListener,如下所示:

public class MyJobListener extends JobListenerSupport {
    private static final Logger log = LogManager.getLogger(LoggingJobListener.class);

    @Override
    public String getName() {
        return "MyJobListener";
    }

    @Override
    public void jobToBeExecuted(JobExecutionContext context) {
        log.info("job will start")   
    }
}

我知道我们可以做这样的事情来添加工作侦听器:

scheduler.getListenerManager().addJobListener(myJobListener, allJobs());

但是我怎样才能添加调度程序以便添加侦听器?

我已经尝试实现 SchedulerFactoryBeanCustomizer 但不知道如何添加侦听器(因为尚未创建调度程序?)

您可以添加一个 Postconstruct 并在那里添加 JobListener。

@Component
public class JobListenerConfig {

    @Autowired
    private SchedulerFactoryBean schedulerFactoryBean;

    @PostConstruct
    public void addListeners() throws SchedulerException {

        schedulerFactoryBean.getScheduler()
                            .getListenerManager()
                            .addJobListener(new MyJobListener());
    }
}