SpringBoot整合Quartz


一、Quartz

  Quartz是一個完全由java編寫的開源作業調度框架。

  job - 任務- 你要做什么事?

  Trigger - 觸發器- 你什么時候去做?

  Scheduler - 任務調度- 你什么時候需要去做什么事?

maven中添加相關依賴:

1 <dependency>
2     <groupId>org.quartz-scheduler</groupId>
3     <artifactId>quartz</artifactId>
4 </dependency>

創建Job類

1 public class QuartzJob implements Job { 2     public void execute(JobExecutionContext arg) throws JobExecutionException { 3         System.out.println("執行定時任務"); 4  } 5 }

測試quartz

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 }

二、SpringBoot整合Quartz

添加maven依賴

 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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM