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

添加相关依赖

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


        
            org.quartz-scheduler
            quartz
            2.2.1
            
                
                    slf4j-api
                    org.slf4j
                
            
        

        
        
            org.springframework
            spring-context-support
        

        
        
            org.springframework
            spring-tx
        

编写Job任务类

SpringBoot使用定时任务之Quartz(一)_第1张图片

增加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(一)_第2张图片

测试:

启动应用:

SpringBoot使用定时任务之Quartz(一)_第3张图片

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

使用CronTrigger

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

SpringBoot使用定时任务之Quartz(一)_第4张图片

测试:

启动应用:

SpringBoot使用定时任务之Quartz(一)_第5张图片

你可能感兴趣的:(spring,boot)