当前位置 : 主页 > 网络编程 > PHP >

SpringBoot使用定时任务之Quartz(一)

来源:互联网 收集:自由互联 发布时间:2023-09-03
添加相关依赖 因为sl4j的依赖在web启动器里面已经包含了,所以这里要去掉。 !-- Quartz坐标 -- dependency groupIdorg.quartz-scheduler/groupId artifactIdquartz/artifactId version2.2.1/version exclusions exclusion a


添加相关依赖

因为sl4j的依赖在web启动器里面已经包含了,所以这里要去掉。

<!-- Quartz坐标 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>

<!-- 添加Scheduled坐标 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>

<!-- Sprng tx 坐标 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>

编写Job任务类

SpringBoot使用定时任务之Quartz(一)_服务器

增加Quartz配置类

SimpleTrigger

/**
* @author Dongguabai
* @date 2018-07-01 17:15
*/
@Configuration
public class QuartzConfig {

/**
* 将Job放入JobDetailFactoryBean
* @return
*/
@Bean
public JobDetailFactoryBean jobDetailFactoryBean(){
JobDetailFactoryBean jobDetailFactory = new JobDetailFactoryBean();
//关联我们定义的Job类
jobDetailFactory.setJobClass(QuartzTest01.class);
return jobDetailFactory;
}

/**
* 设置SimpleTrigger
* @param jobDetailFactory
* @return
*/
@Bean
public SimpleTriggerFactoryBean simpleTriggerFactoryBean(JobDetailFactoryBean jobDetailFactory){
SimpleTriggerFactoryBean simpleTriggerFactory = new SimpleTriggerFactoryBean();
simpleTriggerFactory.setJobDetail(jobDetailFactory.getObject());
//设置间隔时间
simpleTriggerFactory.setRepeatInterval(2000);
//设置重复次数
simpleTriggerFactory.setRepeatCount(20);
return simpleTriggerFactory;
}

/**
* 将SimpleTrigger加入SchedulerFactoryBean
* @param simpleTriggerFactory
* @return
*/
@Bean
public SchedulerFactoryBean schedulerFactoryBean(SimpleTriggerFactoryBean simpleTriggerFactory){
SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
schedulerFactory.setTriggers(simpleTriggerFactory.getObject());
return schedulerFactory;
}
}

开启定时任务

在启动类上增加:

SpringBoot使用定时任务之Quartz(一)_spring_02

测试:

启动应用:

SpringBoot使用定时任务之Quartz(一)_spring_03

发现执行成功,的确是每2秒执行的,但是怎么前面出现了两个在34秒执行的,而且34秒之后又是35秒执行的呢?从35秒之后才开始正常的符合我们要求的每2秒执行一次。这是因为在Quartz在计算时间的时候,是从当前服务器的时间开始计算的,像这个每2秒执行一次,就会从0、5结尾的秒数开始计算。

使用CronTrigger

还有一种是CronTrigger,就是使用克隆表达式的Trigger。

SpringBoot使用定时任务之Quartz(一)_服务器_04

测试:

启动应用:

SpringBoot使用定时任务之Quartz(一)_spring_05

上一篇:初始接口测试04
下一篇:没有了
网友评论