默認你已掌握
Springboot 工程搭建
ApplicationRunner
環境信息
Quartz 2.3.2
Springboot 2.2.0
IDE:idea
搭建步驟
- pom文件關鍵依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
- 定義要執行的任務
@DisallowConcurrentExecution
public class HelloJobSpring extends QuartzJobBean {
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("Hello World in HelloJobSpring Class!Time:"+new Date());
}
}
- QuartzJobBean是spring-boot-starter-quartz中定義的類
- 定義時間規則(時點、頻率等)並綁定任務
@Service
public class HelloJobSpringSchedule {
@Autowired
private Scheduler scheduler;
public void scheduleJob() throws SchedulerException {
//定義要執行的任務
JobDetail job = JobBuilder.newJob(HelloJobSpring.class).withIdentity("job1","group1").build();
//時間規則:每30秒執行一次
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/30 * * * * ?");
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1","group1").startNow().withSchedule(scheduleBuilder).build();
//調度:把任務和時間規則綁定起來
scheduler.scheduleJob(job,trigger);
}
}
- 讓Springboot應用啓動後執行定時任務
@Component
public class QuartzDemoAppRunner implements ApplicationRunner {
@Autowired
HelloJobSpringSchedule helloJobSpringSchedule;
public void run(ApplicationArguments args) throws Exception {
System.out.println("依賴注入完成;系統啓動參數初始化中...");
helloJobSpringSchedule.scheduleJob();
System.out.println("系統啓動參數初始化完成");
}
}
參考文檔
鏈接: Quartz快速入門.