gpt4 book ai didi

spring - 如何 Autowiring Quartz JobListener

转载 作者:行者123 更新时间:2023-12-02 00:10:59 25 4
gpt4 key购买 nike

我正在使用 Spring 注释来连接我的应用程序依赖项。

据我所知,没有办法将我的 JobListener 注入(inject)到 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 管理依赖项,并注入(inject) JobListener 所需的依赖项。

是否有任何有关通过 Spring 配置作业监听器的信息?

最佳答案

嗯,它与作业监听器并不完全相关,但最终如果您想通过 @autowired 位置注入(inject)监听器,则必须在 xml 配置文件中简单地定义映射(一定要关心服务/组件名称) )这应该可以解决问题。它显示我实际上在 Quartz 作业中注入(inject)了服务。

关于spring - 如何 Autowiring Quartz JobListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18024148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com