在springboot框架中使用quartz定时器。
只是测试quartz代码,没有实际操作数据库
导入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
</dependencies>
</project>
有两个测试类,分别设置不同的调用时间
测试类
public class TestTask01 extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("TestQuartz01----->" + sdf.format(new Date()));
}
}
public class TestTask02 extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("TestQuartz02----->" + sdf.format(new Date()));
}
}
- 定时操作sql
import java.util.List;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;
import testmaven06calculation.com.cal.res.pojo.CalData;
import testmaven06calculation.com.cal.res.service.CalDataService;
import testmaven06calculation.com.cal.res.util.AjaxMessage;
public class CalDataQuartz extends QuartzJobBean{
@Autowired
private CalDataService calDataService;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
List<CalData> calDataList = calDataService.queryAllCalData();
// 计算所有公式
for (CalData calData : calDataList) {
try {
AjaxMessage ajax = calDataService.calculateData(calData.getFormula());
System.out.println("公式:"+calData.getFormula()+" "+ajax.getMessage()+" "+ajax.getResult());
} catch (Exception e) {
e.printStackTrace();
}
}
}
quartz配置类
import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class QuartzConfig {
@Bean
public JobDetail testQuartz01() {
return JobBuilder.newJob(TestTask01.class).withIdentity("testTask01").storeDurably().build();
}
@Bean
public Trigger testQuartzTrigger01() {
// 5秒执行一次
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(2)
.repeatForever();
return TriggerBuilder.newTrigger().forJob(testQuartz01())
.withIdentity("testTask01")
.withSchedule(scheduleBuilder)
.build();
}
@Bean
public JobDetail testQuartz02() {
return JobBuilder.newJob(TestTask02.class).withIdentity("testTask02").storeDurably().build();
}
@Bean
public Trigger testQuartzTrigger02() {
// cron方式,5秒执行一次
return TriggerBuilder.newTrigger().forJob(testQuartz02())
.withIdentity("testTask02")
.withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?"))
.build();
}
}
定时器效果
TestQuartz01----->2021-01-11 13:34:37
TestQuartz02----->2021-01-11 13:34:38
TestQuartz01----->2021-01-11 13:34:39
TestQuartz02----->2021-01-11 13:34:40
TestQuartz01----->2021-01-11 13:34:41
TestQuartz02----->2021-01-11 13:34:42
TestQuartz01----->2021-01-11 13:34:43
TestQuartz02----->2021-01-11 13:34:44
TestQuartz01----->2021-01-11 13:34:45
TestQuartz02----->2021-01-11 13:34:46
TestQuartz01----->2021-01-11 13:34:47
TestQuartz02----->2021-01-11 13:34:48
TestQuartz01----->2021-01-11 13:34:49
TestQuartz02----->2021-01-11 13:34:50