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

添加相关依赖

因为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。


测试:

启动应用:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值