介绍
定义
Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。
作用
定时自动执行某段Java代码
Java程序中Spring Task的使用场景
信用卡每月还款提醒、设置每日定时闹钟、火车票售票系统处理未支付的订单、QQ每年生日提醒发送通知。
cron表达式
定义
cron表达式是一个字符串,它可以定义任务触发的时间。
构成规则:分为6或7个域(简单来说就是6或7个位置)由空格分隔开,每个域代表一个含义
每个域的含义分别为:秒、分钟、小时、日、月、周、年(可选)(注意:有从左到右的顺序)
注意:日或者周只需定义一个,因为12日不一定就是星期三,星期三不一定就是12日
工具
cron表达式在线生成器:https://cron.qqe2.com/
(注:在国外的第一天是星期日,所以填的周二实际是我们这的星期一)
步骤
导入maven坐标spring-context
(它属于spring-boot-starter包下边的)
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
启动类里添加注解@EnableScheduling开启任务调度
@SpringBootApplication
@EnableTransactionManagement //开启注解方式的事务管理
@Slf4j
@EnableCaching //开启缓存注解功能
@EnableScheduling//开启任务调度
/**
* 启动类
*/
public class SkyApplication {
public static void main(String[] args) {
SpringApplication.run(SkyApplication.class, args);
log.info("server started");
}
}
编写自定义定时任务类(重点)
/**
*自定义定时任务类
*/
@Component
@Slf4j
public class MyTask{
/**
*定时任务 每隔5秒触发一次
*/
@Scheduled(cron = "0/5 * * * * ?")
public void executeTask(){
log.info("定时任务开始执行:{}",new Date());
}
}
来自上海