package com.ruoyi.inspectiontask.service.impl;
|
|
import org.quartz.spi.TriggerFiredBundle;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
|
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContextAware;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
|
import org.springframework.scheduling.quartz.SpringBeanJobFactory;
|
|
@Configuration
|
public class QuartzConfig {
|
@Autowired
|
private ApplicationContext applicationContext;
|
|
@Bean
|
public SchedulerFactoryBean schedulerFactoryBean() {
|
SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
|
|
// 配置SpringBeanJobFactory,用于支持Job中的依赖注入
|
AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
|
jobFactory.setApplicationContext(applicationContext);
|
schedulerFactory.setJobFactory(jobFactory);
|
|
// 其他配置...
|
return schedulerFactory;
|
}
|
|
// 自定义JobFactory,支持自动注入
|
public static class AutowiringSpringBeanJobFactory extends SpringBeanJobFactory
|
implements ApplicationContextAware {
|
|
private transient AutowireCapableBeanFactory beanFactory;
|
|
@Override
|
public void setApplicationContext(ApplicationContext applicationContext) {
|
this.beanFactory = applicationContext.getAutowireCapableBeanFactory();
|
}
|
|
@Override
|
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
|
Object jobInstance = super.createJobInstance(bundle);
|
// 将Job实例交给Spring容器管理,使其能够进行依赖注入
|
beanFactory.autowireBean(jobInstance);
|
return jobInstance;
|
}
|
}
|
}
|