返回

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

发布时间:2022-12-31 14:33:36 282
# webkit# spring# 服务器# 服务器

添加相关依赖

因为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(一)_spring

增加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(一)_服务器_03

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

使用CronTrigger

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

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

测试:

启动应用:

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

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
MySQL 案例实战--MySQL 触发器 2022-12-31 14:21:55