轉載自https://blog.csdn.net/wk52525/article/details/79100973spring
1 maven依賴併發
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
2 建立第一個任務maven
package top.kylewang.bos.quartz; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.stereotype.Component; @Component @EnableScheduling public class FirstJob{ public void task(){ System.out.println("任務1執行...."); } }
建立第二個任務spring-boot
package top.kylewang.bos.quartz; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.stereotype.Component; @Component @EnableScheduling public class SecondJob{ public void task(){ System.out.println("任務2執行...."); } }
3建立觸發器和開啓任務spa
package top.kylewang.quartz; import org.quartz.JobDetail; import org.quartz.Trigger; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean; import org.springframework.scheduling.quartz.SchedulerFactoryBean; import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean; import org.springframework.scheduling.quartz.CornTriggerFactoryBean; import top.kylewang.bos.quartz.FirstJob ; import top.kylewang.bos.quartz.SecondJob; @Configuration public class QuartzConfiguration { // 配置定時任務1 @Bean(name = "firstJobDetail") public MethodInvokingJobDetailFactoryBean firstJobDetail(FirstJob firstJob) { MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean(); // 是否併發執行 jobDetail.setConcurrent(false); // 爲須要執行的實體類對應的對象 jobDetail.setTargetObject(firstJob); // 須要執行的方法 jobDetail.setTargetMethod("task"); return jobDetail; } // 配置觸發器1 @Bean(name = "firstTrigger") public SimpleTriggerFactoryBean firstTrigger(JobDetail firstJobDetail) { SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean(); trigger.setJobDetail(firstJobDetail); // 設置任務啓動延遲 trigger.setStartDelay(0); // 每5秒執行一次 trigger.setRepeatInterval(5000); return trigger; } // 配置定時任務2 @Bean(name = "secondJobDetail") public MethodInvokingJobDetailFactoryBean secondJobDetail(SecondJob secondJob) { MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean(); // 是否併發執行 jobDetail.setConcurrent(false); // 爲須要執行的實體類對應的對象 jobDetail.setTargetObject(secondJob); // 須要執行的方法 jobDetail.setTargetMethod("task"); return jobDetail; } // 配置觸發器2 @Bean(name = "secondTrigger") public CronTriggerFactoryBean secondTrigger(JobDetail secondJobDetail) { CronTriggerFactoryBean trigger = new CronTriggerFactoryBean(); trigger.setJobDetail(secondJobDetail.getObject()); // cron表達式 trigger.setCronExpression("0 30 20 * * ?"); return trigger; } // 配置Scheduler @Bean(name = "scheduler") public SchedulerFactoryBean schedulerFactory(Trigger firstTrigger, Trigger secondTrigger) { SchedulerFactoryBean bean = new SchedulerFactoryBean(); // 延時啓動,應用啓動1秒後 bean.setStartupDelay(1); // 註冊觸發器 bean.setTriggers(firstTrigger,secondTrigger); return bean; } }