Spring Boot集成定时任务

一、定时任务使用场景

在项目中有些报表业务需要定时执行,一般在临晨执行或者晚上12点,计算当天的业务汇总springboot定时任务,这时就要用到定时任务了。Spring Boot自带了很简单的定时任务功能,可以开启springboot定时任务,方便我们实现业务。

二、构建Spring Boot项目

只需要在Maven工程pom.xml引入以下代码:

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

三、主启动类开启定时任务扫描

在Spring Boot的主启动类CoreSpringStartApplication添加@EnableScheduling

扫描,代码如下:

// 定时任务Scheduled开启注解

// 开启Swagger

@SpringBootApplication

@EnableScheduling

@EnableSwagger2

public class CoreSpringStartApplication {

public static void main(String[] args) {

SpringApplication.run(CoreSpringStartApplication.class, args);

}

}

即可开启定时任务。

四、创建定时任务实现类

新建com.ocai.core.task包,在该包下新建TaskService.java类,添加@Component

配置成Spring Bean组件,如图所示:

springboot揭秘快速构建微服务体系_springboot定时任务_定时播音员(定时播放音乐软件) 注册码

添加

@Scheduled(cron=”*/6 * * * * ?”)

Cron表达式,表示每隔6秒执行一次:cron=”*/6 * * * * ?”

执行方法代码如下:

private int count=0;
@Scheduled(cron="*/6 * * * * ?")
private void process(){
 System.out.println("this is scheduler task runing "+(count++));
}

新建固定

@Scheduled(fixedRate = 6000)

表示间隔6000毫秒执行

执行方法代码如下:

@Scheduled(fixedRate = 6000)
public void reportCurrentTime() {
 System.out.println("现在时间:" + dateFormat.format(new Date()));
}

五、运行主程序Application

运行CoreSpringStartApplication看下定时任务组件执行结果:

this is scheduler task runing 0

现在时间:20:04:54

this is scheduler task runing 1

现在时间:20:05:00

this is scheduler task runing 2

现在时间:20:05:06

this is scheduler task runing 3

现在时间:20:05:12

this is scheduler task runing 4

现在时间:20:05:18

this is scheduler task runing 5

现在时间:20:05:24

this is scheduler task runing 6

=============================================================

表示定时任务已经开启,执行了TaskService中的2个任务。

六、参数说明

TaskService.java中的注解@Scheduled表示生成一个定时任务实现:

springboot揭秘快速构建微服务体系_springboot定时任务_定时播音员(定时播放音乐软件) 注册码

@Scheduled可以接受2种定时的设置:

一种是Cron表达式:cron=”*/6 * * * * ?”表示每隔6秒执行一次,Cron表达式还有多种功能,这里不详细举例,可以设置固定的时间点执行等等。

一种是fixedRate = 6000,表示固定间隔6000毫秒执行一次。

fixedRate参数说明:

@Scheduled(fixedRate = 6000) :上一次开始执行时间点之后6秒再执行

@Scheduled(fixedDelay = 6000) :上一次执行完毕时间点之后6秒再执行

@Scheduled(initialDelay=1000, fixedRate=6000) :表示第一次延迟1秒,后面按finxedRate规则每6秒执行一次。

七、总结

Spring Boot通过@EnableScheduling开启自带定时任务功能,可通过Cron表达式以及fixedRate规则执行。关于定时任务还有专门的Quartz框架实现。Spring Boot也可以整合Quartz实现定时任务中心,笔者曾经写过定时任务中心代码模块,后面有时间会分享。

限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688