解决Spring boot项目quartz的job没法使用注解方式实例化对象

使用自定义Job Factory,用于Spring注入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@Component
public class CustomJobFactory 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 QuartzConfig {
...
@Bean
public SchedulerFactoryBean schedulerFactoryBean() throws IOException {
schedulerFactory = new SchedulerFactoryBean();
schedulerFactory.setOverwriteExistingJobs(true);
// 延时启动
schedulerFactory.setStartupDelay(20);
// 加载quartz数据源配置
schedulerFactory.setQuartzProperties(quartzProperties());
// 自定义Job Factory,用于Spring注入
schedulerFactory.setJobFactory(customJobFactory);
return schedulerFactory;
}
}
0%