Catalog
Spring Task-定时任务
1. 需求
在开发项目过程中,我们可能会需要项目每隔一段时间就去处理系统中的脏数据,或者可能需要系统定时发送通知到用户端等等,这些操作如果交给我们手动处理会非常繁琐,spring开发了自己的任务管理组件Task,使用该组件可以很方便地实现定时任务。
2. cron表达式
在了解Spring Task之前,我们先了解一下cron表达式,该表达式主要用于表示任务的执行时间或者执行频率,比如每分钟执行一次,在每天凌晨3点执行一次。
- 形式:cron表达式在Java中本质上是一个字符串,形如“* * * * * * * ”分别对应秒、分钟、小时、日期、月份、星期几、年份(年份可以不写),由于日期和星期几不是绝对的对应关系,比如4月30日不总是星期二,所以二者之间有一个可以使用"?"来表示。
- 举例:“0 0/1 * * * ?”和“0 * * * * ? ”都表示每分钟执行一次任务
- 自动生成cron表达式的网站:在线Cron表达式生成器 (qqe2.com)
3. 使用方法
-
导入Maven坐标(主要jar包是在spring-context里面)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> -
创建定时任务类(创建一个普通的类,添加@Commpoent注解即可)
-
在方法上添加@Scheduled注解和cron表达式
@Component public class MySpringTask { /** * 设置为定时任务(开启线程) */ @Scheduled(cron = "0 0/1 * * * ?") public void print(){ System.out.println(Thread.currentThread().getName() + " spring task run..."); } }