Quartz 定时任务
简述
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.3.2。
简单实现
- 添加依赖
<!--添加Quartz的支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
- 准备定时任务,要继承
QuartzJobBean
类
// 准备定时任务
@Component
public class TestQuartz extends QuartzJobBean {
@Override
@Transactional //事务控制
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
Calendar calendar = Calendar.getInstance();
Date timeOut = calendar.getTime();
DateFormat dateFormat = DateFormat.getDateTimeInstance();
String format = dateFormat.format(timeOut);
System.out.println(format+" 定时器触发!!!");
}
}
- 定义定时任务配置类
Springboot 中加入注解@Configuration
。
常和corn
表达式,一起使用。
@Configuration
public class QuartzConfig {
//定义任务详情
@Bean
public JobDetail quartzJobDetail() {
//指定job的名称和持久化保存任务
return JobBuilder
.newJob(TestQuartz.class)//指定一个全新的任务
.withIdentity("testQuartz")//指定任务名称
.storeDurably()
.build();//任务创建 封装为JobDetail对象
}
//定义触发器
@Bean
public Trigger testTrigger() {
//定义调度器 周期的执行的时间
// SimpleScheduleBuilder builder = SimpleScheduleBuilder.
// simpleSchedule().
// withIntervalInMinutes(1). //定义事件周期
// repeatForever();
//定义调度器 指定任务的执行的时间
CronScheduleBuilder builder = CronScheduleBuilder.cronSchedule("0 0/1 * * * ?");
return TriggerBuilder.newTrigger().forJob(quartzJobDetail()).withIdentity("testQuartz").withSchedule(builder).build();
}
}
- 启动Springboot项目即可。