Quartz介绍
Quartz 是一个功能丰富的开源作业调度库,几乎可以集成到任何 Java 应用程序中 - 从最小的独立应用程序到最大的电子商务系统。Quartz 可用于创建简单或复杂的计划,以执行数十、数百甚至数万个作业;其任务被定义为标准 Java 组件的作业,这些组件几乎可以执行您可以对它们进行编程执行的任何操作。Quartz Scheduler 包含许多企业级功能,例如对 JTA 事务和集群的支持。
Quartz框架的使用思路
1)job - 任务 - 你要做什么事?
2)Trigger - 触发器 - 你什么时候去做?
3)Scheduler - 任务调度 - 你什么时候需要去做什么事?
SpringBoot整合Quartz框架
1 添加Quartz依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
2 自定义一个Job
/**
* 任务类
*/
@Component
public class JobDemo {
public void priTime(){
System.out.println("现在是:"+new Date());
}
}
3 编写quartz配置类
@Configuration
public class QuartzConfig {
@Bean//job:干什么事
public MethodInvokingJobDetailFactoryBean methodInvokingJobDetailFactoryBean(
QuartzDemo quartzDemo){
MethodInvokingJobDetailFactoryBean JobDetailFactoryBean = new
MethodInvokingJobDetailFactoryBean();
JobDetailFactoryBean.setTargetObject(clearImgJob);
JobDetailFactoryBean.setTargetMethod("printTime");
return JobDetailFactoryBean;
}
@Bean//trigger:什么时候
public CronTriggerFactoryBean cronTriggerFactoryBean(
MethodInvokingJobDetailFactoryBean JobDetailFactoryBean){
CronTriggerFactoryBean triggerFactoryBean = new CronTriggerFactoryBean();
triggerFactoryBean.setCronExpression("0/1 * * * * ?");
triggerFactoryBean.setJobDetail(JobDetailFactoryBean.getObject());
return triggerFactoryBean;
}
@Bean//scheduler:什么时候干什么事
public SchedulerFactoryBean schedulerFactoryBean(
CronTriggerFactoryBean triggerFactoryBean){
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setTriggers(triggerFactoryBean.getObject());
return schedulerFactoryBean;
}
}
4 编写启动类
@SpringBootApplication
public class QuartzTestApp {
public static void main(String[] args) {
SpringApplication.run(QuartzTestApp.class,args);
}
}
5 结果:
运行启动类,观察控制台,可以发现每隔1秒会输出一次,说明每隔1秒自定义 Job被调用一次。