1、Quartzjava
Quartz是一個徹底由java編寫的開源做業調度框架。spring
job - 任務- 你要作什麼事?api
Trigger - 觸發器- 你何時去作?框架
Scheduler - 任務調度- 你何時須要去作什麼事?maven
maven中添加相關依賴:測試
1 <dependency>
2 <groupId>org.quartz-scheduler</groupId>
3 <artifactId>quartz</artifactId>
4 </dependency>
建立Job類ui
1 public class QuartzJob implements Job { 2 public void execute(JobExecutionContext arg) throws JobExecutionException { 3 System.out.println("執行定時任務"); 4 } 5 }
測試quartzthis
1 public static void main(String[] args) thwors Exception { 2 JobDetail jobDetail = JobBuilder.newJob(QuartzJob.class).build(); 3 Trigger trigger = TriggerBuilder.newTrigger().withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")); 4 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); 5 scheduler.setScheduleJob(job, trigger); 6 scheduler.start(); 7 }
2、SpringBoot整合Quartzspa
添加maven依賴code
1 <dependency>
2 <groupId>org.quartz-scheduler</groupId>
3 <artifactId>quartz</artifactId>
4 <exclusions>
5 <exclusion>
6 <groupId>org.slf4j</groupId>
7 <artifactId>slf4j-api</artifactId>
8 </exclusion>
9 </exclusions>
10 </dependency>
11 <dependency>
12 <groupId>org.springframework</groupId>
13 <artifactId>spring-context-support</artifactId>
14 </dependency>
15 <dependency>
16 <groupId>org.springframework</groupId>
17 <artifactId>spring-tx</artifactId>
18 </dependency>
啓動類開啓定時任務
1 @SpringBootApplication 2 @EnableScheduling 3 public class App { 4 public static void main(String[] args) { 5 SpringAppliction.run(App.class, args); 6 } 7 }
編寫一個適配器任務工廠,將實例化的任務手動添加到SpringIOC容器中完成對象的注入。
1 @Component("myAdaptableJobFactory") 2 public class MyAdaptableJobFactory extends AdaptableJobFactory { 3 @Autowired 4 private AutowireCapableBeanFactory autowireCapableBeanFactory; 5 protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception { 6 Object object = super.createJobInstance(bundle); 7 this.autowireCapableBeanFactory.autowireBean(object); 8 return object; 9 } 10 }
編寫QuartzConfig
1 @Configuration 2 public class QuartzConfig { 3 //建立Job對象
4 @Bean 5 public JobDetailFactoryBean jobDetailFactoryBean() { 6 JobDetailFactoryBean factory = new JobDetailFactoryBean(); 7 factory.setJobClass(QuartzJob.class); 8 return factory; 9 } 10 //建立Trigger對象
11 @Bean 12 public CronTriggerFactoryBean cronTriggerFactoryBean(JobDetailFactoryBean jobDetialFactoryBean) { 13 CronTriggerFactoryBean factory = new CronTriggerFactoryBean(); 14 factory.setJobDetail(jobDetailFactoryBean.getObject); 15 factory.setCronExpression("0/2 * * * * ?"); 16 return factory; 17 } 18 //建立Scheduler對象
19 @Bean 20 public SchedulerFactoryBean schedulerFactoryBean(CronTriggerJobFactory cronTriggerJobFactory, MyAdaptableFactory myAdaptableFactory) { 21 SchedulerFactoryBean factory = new SchedulerFactoryBean(); 22 factory.setTriggers(cronTriggerFactoryBean.getObject()); 23 factory.setJobFactory(myAdaptableFactory); 24 return factory; 25 } 26 }