SpringBoot不使用Quartz集成定时任务的两种方式

静态定时任务@Scheduled

静态定时任务可以使用@scheduled注解来实现
首先在启动类中加入@EnableScheduling注解
然后在定时任务类中做如下操作

@Component
public class ScheduledJob {
    @Scheduled(cron = "0/5 * * * * ?")
    public void doTask(){
        System.out.println("执行了MyStaticTask,时间为:"+new Date(System.currentTimeMillis()));
    }
}

此时即是隔五秒执行
执行效果如下图
在这里插入图片描述

同时,@Scheduled还可以采用其他注解属性如fixedDelay,fixedRate等属性,也能达到同样的效果

    @Scheduled(fixedDelay = 5000)
    public void doTask(){
        System.out.println("执行了MyStaticTask,时间为:"+new Date(System.currentTimeMillis()));
    }

动态定时任务实现SchedulingConfigurer接口

如下

import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.stereotype.Component;

@Component
public class ScheduledTasks implements SchedulingConfigurer {
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.addCronTask(new Runnable() {

            @Override
            public void run() {
                //System.out.println("接口动态定时任务每五秒一次");
            }
        }, "0/5 * * * * ?");  //加入时间
    }
}

虽然此时在加入时间处已写死cron表达式,但我们在这之前可通过如数据库取值或者其他方式赋值来动态为此处的表达式赋值。从而达到动态定时任务的目的
上述定时任务的执行效果如图
在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__0809 返回首页