第一步建一个类
@Component
public class JobFactory extends AdaptableJobFactory {@Autowired
private AutowireCapableBeanFactory capableBeanFactory;
@Override
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
// 调用父类的方法
Object jobInstance = super.createJobInstance(bundle);
// 进行注入
capableBeanFactory.autowireBean(jobInstance);
return jobInstance;
}
}
第二步:在配置中加入
@Configuration
public class SchedulerConfig {
@Autowired
private JobFactory jobFactory;
@Bean(name="SchedulerFactory")
public SchedulerFactoryBean schedulerFactoryBean() throws IOException {
SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setQuartzProperties(quartzProperties());
factory.setJobFactory(jobFactory);
return factory;
}
@Bean
public Properties quartzProperties() throws IOException {
PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
propertiesFactoryBean.setLocation(new ClassPathResource("/quartz.properties"));
//在quartz.properties中的属性被读取并注入后再初始化对象
propertiesFactoryBean.afterPropertiesSet();
return propertiesFactoryBean.getObject();
}
/*
* quartz初始化监听器
*/
@Bean
public QuartzInitializerListener executorListener() {
return new QuartzInitializerListener();
}
/*
* 通过SchedulerFactoryBean获取Scheduler的实例
*/
@Bean(name="Scheduler")
public Scheduler scheduler() throws IOException {
return schedulerFactoryBean().getScheduler();
}
}
}
第三步测试
public class CrmWorkTargetDetailJob implements BaseJob {
@Autowired
private DaoSupport daoSupport;
@Autowired(required=false)
private CompactInfoService compactInfoService;
@Autowired(required=false)
private CrmWorkTargetService crmWorkTargetService;
@Autowired(required=false)
private CrmWorkTargetDetailService crmWorkTargetDetailService;
@Autowired(required=false)
private CompactExecuteService compactExecuteService;
/*
* <p>Title: execute</p>
* <p>Description: </p>
* @param context
* @throws JobExecutionException
* @see com.caist.ft.job.BaseJob#execute(org.quartz.JobExecutionContext)
*/
public void execute(JobExecutionContext context) throws JobExecutionException {
//内容
}