什么是Spring Task
Spring Task是Spring框架提供的一种定时任务调度框架,它可以让程序员以非常简单的方式实现定时任务的调度和执行。Spring Task提供了TaskScheduler和TaskExecutor两个接口,其中TaskScheduler负责定时任务的调度,而TaskExecutor负责任务的执行。
Spring Task相关技术
@Scheduled注解
@Scheduled注解是Spring Task最常用的方式,它可以将一个方法标记为定时任务,并指定任务的执行周期和其他相关属性。@Scheduled注解中用
TaskScheduler接口
TaskScheduler接口是Spring Task的任务调度器,它可以执行多种类型的任务调度。TaskScheduler接口可以调度多个任务,可以指定任务的执行周期、执行时间点等属性。
TaskExecutor接口
TaskExecutor接口是Spring Task的任务执行器,它可以执行多种类型的任务。TaskExecutor接口可以执行多个任务,可以指定任务的执行方式、执行时间点等属性。
Cron表达式
Cron表达式是一种用于定时任务调度的语法,来控制任务的执行时间:
(1)Cron表达式由6个或7个字段组成,分别表示秒、分、时、日、月、周、年(可省略),在Spring Task框架中,只支持六个参数
(2)可以直接去在线生成器中生成,链接:
(3)每个字段可以使用通配符、逗号、连字符等符号表示。
Spring Task的使用步骤
使用Spring Task非常简单,只需要按照以下步骤即可:
1.在pom.xml文件中添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
具体需要的jar包是context包
2.在Spring Boot应用的启动类上添加@EnableScheduling注解,开启定时任务调度功能
@SpringBootApplication
@EnableScheduling
public class ApplicationSpring {
public static void main(String[] args) {
SpringApplication.run(ApplicationSpring.class, args);
}
}
3.在定时任务执行的方法上添加@Scheduled注解,编写cron 表达式
@Scheduled(cron = "0/5 * * * * ?")
public void executeTask() {
// 执行定时任务的代码
}
Spring Task的优缺点
优点
-
Spring Task提供了非常简单的方式实现定时任务调度,不需要借助其他复杂的框架(适用于单体项目)
-
Spring Task支持多种类型的任务调度,可以根据业务需求灵活选择
-
Spring Task可以与Spring框架无缝集成,与Spring Boot应用的集成也非常简单
缺点
-
Spring Task的定时任务通常是单节点执行的,不支持分布式任务调度
-
Spring Task的任务调度精度不高,最小粒度只能是秒级,无法满足一些高精度的任务调度需求