低调人的gravatar头像
低调人 2018-04-22 16:41:15
Spring Boot之Spring Boot使用@Scheduled创建定时任务

我们在编写Spring Boot应用中经常会遇到这样的场景,比如:我需要定时地发送一些短信、邮件之类的操作,也可能会定时地检查和监控一些标志、参数等。

创建定时任务

在Spring Boot中编写定时任务是非常简单的事,下面通过实例介绍如何在Spring Boot中创建定时任务,实现每过5秒输出一下当前时间。

  • 在Spring Boot的主类中加入@EnableScheduling注解,启用定时任务的配置

 

@SpringBootApplication

@EnableScheduling

public class Application {

    public static void main(String[] args) {

        SpringApplication.run(Application.class, args);

    }

}

  • 创建定时任务实现类

@Component

public class ScheduledTasks {

private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    @Scheduled(fixedRate = 5000)

    public void reportCurrentTime() {

        System.out.println("现在时间:" + dateFormat.format(new Date()));

    }

}

  • 运行程序,控制台中可以看到类似如下输出,定时任务开始正常运作了。

2018-04-15 10:40:04.073 INFO 1688 --- [ main] com.cicoding.Application : Started Application in 1.433 seconds (JVM running for 1.967) 现在时间:10:40:09 现在时间:10:40:14 现在时间:10:40:19 现在时间:10:40:24 现在时间:10:40:29522 现在时间:10:40:34

 

关于上述的简单入门示例也可以参见官方的Scheduling Tasks

@Scheduled详解

在上面的入门例子中,使用了@Scheduled(fixedRate = 5000) 注解来定义每过5秒执行的任务,对于@Scheduled的使用可以总结如下几种方式:

  • @Scheduled(fixedRate = 5000) :上一次开始执行时间点之后5秒再执行
  • @Scheduled(fixedDelay = 5000) :上一次执行完毕时间点之后5秒再执行
  • @Scheduled(initialDelay=1000, fixedRate=5000) :第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
  • @Scheduled(cron="*/5 * * * * *") :通过cron表达式定义规则


打赏
最近浏览
pxqtsht  LV15 2020年12月4日
程序媛  LV3 2019年3月7日
longyin2018  LV14 2019年3月1日
低调人  LV38 2019年2月24日
986871510  LV11 2018年11月9日
626364708  LV4 2018年7月23日
短巷拥猫  LV11 2018年7月19日
浙江螃蟹  LV7 2018年7月12日
dns1000 2018年7月11日
暂无贡献等级
609223269  LV3 2018年7月10日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友