1.相关概念
- 工作(Job): 用于定义具体执行的工作
- 工作明细(JobDetail): 用于描述定时工作相关的信息
- 触发器(Trigger): 用于描述触发工作的规则,通常使用cron表达式定义调度规则
- 调度器(Scheduler): 描述了工作明细与触发器的对应关系
2.整合Quartz
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
- 定义具体内容
继承QuartzJobBean,并实现抽象方法
public class MyQuartz extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
System.out.println("timer task run...");
}
}
@Configuration
public class QuartzConfig {
@Bean
public JobDetail printJobDetail(){
return JobBuilder.newJob(MyQuartz.class).storeDurably().build();
}
@Bean
public Trigger printTrigger(){
ScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
return TriggerBuilder.newTrigger().forJob(printJobDetail()).withSchedule(scheduleBuilder).build();
}
}
3.整合Task
- 1.开启定时任务功能
@EnableScheduling
@SpringBootApplication
@EnableScheduling
public class Springboot22TaskApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot22TaskApplication.class, args);
}
}
- 2.设置定时执行的任务,并设定执行周期
@Scheduled,并配置Cron表达式
@Component
public class MyBean {
@Scheduled(cron = "0/1 * * * * ?")
public void print(){
System.out.println("spring task run...");
}
}
spring:
task:
scheduling:
# 任务调度线程池大小
pool:
size: 1
# 调度线程名称前缀 默认 scheduling-
thread-name-prefix: ssm_
shutdown:
# 线程池关闭时等待所有任务完成
await-termination: false
# 调度线程关闭前最大等待时间,确保最后一定关闭
await-termination-period: 10s