简介
现在有个需求: 下图中我需要通过@Resource将SpringIOC容器里面的userService给直接注入到job里面,那原生的Quartz不支持,直接调用userService将会出现null
此时就需要改造定时器,将定时器也用SpringIOC容器管理,具体改造如下所示
增加类
/**
* 定时器配置
*
* @author zhangqing
* @date 2017年04月13日
*/
@Configuration
@EnableScheduling
public class QuartzConfig {
@Autowired
private QiYuJobFactory qiYuJobFactory;
@Bean
public SchedulerFactoryBean
schedulerFactoryBean()
throws IOException {
SchedulerFactoryBean factory =
new SchedulerFactoryBean();
factory.setOverwriteExistingJobs(
true);
factory.setStartupDelay(
20);
factory.setJobFactory(qiYuJobFactory);
return factory;
}
}
/**
* FactoryBean
*
* @author zhangqing
* @date 2017年04月13日
*/
@Component
public class QiYuJobFactory extends AdaptableJobFactory {
@Autowired
private AutowireCapableBeanFactory capableBeanFactory;
@Override
protected Object
createJobInstance(TriggerFiredBundle bundle)
throws Exception {
Object jobInstance =
super.createJobInstance(bundle);
capableBeanFactory.autowireBean(jobInstance);
return jobInstance;
}
}
修改
之前的SchedulerManager和QuartzManager做了一下改动,名字我也该了将QuartzManager改成了SchedulerUtil,感觉更加合适了。将这两个类也给SpringIOC去管理了。
SchedulerUtil类里面改造了一下,注入了Scheduler。下载文件
转载请注明原文地址: https://ju.6miu.com/read-669378.html