添加相关依赖 因为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任务类
增加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;
}
}
开启定时任务
在启动类上增加:
测试:
启动应用:
发现执行成功,的确是每2秒执行的,但是怎么前面出现了两个在34秒执行的,而且34秒之后又是35秒执行的呢?从35秒之后才开始正常的符合我们要求的每2秒执行一次。这是因为在Quartz在计算时间的时候,是从当前服务器的时间开始计算的,像这个每2秒执行一次,就会从0、5结尾的秒数开始计算。
使用CronTrigger
还有一种是CronTrigger,就是使用克隆表达式的Trigger。
测试:
启动应用: