我正在使用Spring注释连接我的应用程序依赖项。
据我所知,没有办法将我的JobListener注入Quartz SchedulerFactoryBean,因为它是在这里配置的:
@Bean(name="schedulerFactory")
public SchedulerFactoryBean schedulerFactoryBean() throws Exception {
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setApplicationContextSchedulerContextKey("applicationContext");
schedulerFactoryBean.setConfigLocation(new ClassPathResource("quartz.properties"));
schedulerFactoryBean.setDataSource(dataSource);
// This call results in the error:
// java.lang.IllegalStateException: Non-global JobListeners not supported on
// Quartz 2 - manually register a Matcher against the Quartz ListenerManager instead
//schedulerFactoryBean.setJobListeners(new JobListener[] { jobActivityListener() });
return schedulerFactoryBean;
}
我目前必须以编程方式配置要在首次触发作业时创建的JobListener:
ListenerManager listenerManager = scheduler.getListenerManager();
if (listenerManager.getJobListener(jobKey.getName()) == null) {
logger.debug("ADDING JOB LISTENER FOR " + jobKey.getName());
listenerManager.addJobListener(new JobActivityListener(), keyEquals(jobKey));
}
这不是理想的,因为我们希望Spring管理依赖关系,并注入JobListener所需的依赖关系。
是否有关于通过Spring配置作业侦听器的信息?
最佳答案
好吧,它与工作监听器并不完全相关,但是最终如果您想通过@autowired位置注入监听器,则必须在xml configura文件中定义映射(注意服务/组件名称),然后应该做的把戏..
它表明我实际上在Quartz作业中注入了服务。