Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。
下面是如何使用Spring的任务调度功能的步骤:
1. 引入依赖
如果你使用的是Spring Boot,你需要在pom.xml
中添加以下依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-task</artifactId>
</dependency>
2. 启用调度
在你的Spring Boot应用程序主类上添加@EnableScheduling
注解以启用调度功能:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;@SpringBootApplication
@EnableScheduling
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}
3. 创建定时任务
你可以通过创建一个使用@Scheduled
注解的方法来定义定时任务。例如,下面的代码将在每分钟的第0秒执行一次任务:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;@Component
public class MyScheduledTask {@Scheduled(fixedRate = 60000) // 每60秒执行一次public void performTask() {System.out.println("定时任务执行: " + System.currentTimeMillis());}@Scheduled(cron = "0 0/1 * * * ?") // 每分钟的第0秒执行public void performCronTask() {System.out.println("Cron 定时任务执行: " + System.currentTimeMillis());}
}
4. 使用不同的调度方式
- fixedRate: 以固定频率执行,单位为毫秒。
- fixedDelay: 上一个任务结束后,等待指定延迟后再执行下一次,单位为毫秒。
- cron: 使用Cron表达式来定义复杂的调度规则。
Cron 表达式
示例说明
每小时的第15分钟执行:
0 15 * * *
每天中午12点执行:
0 12 * * *
Cron 表达式的格式
秒 分 小时 日 月 星期
字段 | 允许值 | 说明 |
---|---|---|
秒 | 0-59 | 指定秒数 |
分 | 0-59 | 指定分钟数 |
小时 | 0-23 | 指定小时数 |
日 | 1-31 | 指定日期 |
月 | 1-12或JAN-DEC | 指定月份 |
星期 | 0-6或SUN-SAT(0和7都是星期天) | 指定星期几 |
年(可选) | 1970-2099 | 指定年份 |
特殊字符
*
:表示“每个”,例如,*
在分钟字段中表示“每分钟”。?
:表示“不指定”,通常用于日期和星期字段,避免冲突。-
:表示范围,例如,1-5
表示从1到5。,
:表示列举,例如,1,3,5
表示1、3和5。/
:表示步进,例如,0/15
在分钟字段中表示“每15分钟一次”。L
:表示“最后”,如L
在日字段中表示“这个月的最后一天”。W
:表示“最近的工作日”,如15W
表示“最近的工作日”。#
:表示“第几个星期几”,如3#2
表示“这个月的第二个星期三”。