引入
在我们开发时难免会遇到一些需要定时来处理的事务,例如:订单倒计时结束后自动取消、每到周年纪念日会给用户发福利、用户的生日祝福,在遇到这种问题的时候我们就可以考虑使用Spring Task 定时任务。
介绍SpringTask
Spring Task是Spring框架中的一个模块,用于处理任务调度和定时任务。它提供了一种简单的方式来执行定时任务,例如在特定的时间间隔内执行某个方法或在固定的时间点执行某个任务。
Spring Task的主要特点包括:
非常简单易用:Spring Task提供了注解和配置方式来定义任务调度,使得任务调度变得非常简单。只需要在方法上加上注解或在配置文件中配置即可。
内置支持:Spring Task内置了多种任务调度机制,包括使用cron表达式调度任务、固定间隔调度任务等。开发者只需要选择适合自己的调度方式即可。
异步执行:Spring Task支持异步执行任务,可以提高系统的性能和响应速度。
灵活性:Spring Task可以与Spring的其他模块无缝集成,例如与Spring Boot、Spring MVC等。
使用Spring Task可以有效地管理系统中的定时任务,简化任务调度的开发和管理。它可以应用于各种场景,例如定时统计报表、定时备份数据等。
准备工作
添加完Springboot的依赖后就无需导入SpringTask的依赖坐标
在启动类上添加下面的注解来开启任务调度,实现定时任务
@EnableScheduling
效果图如下:
使用SpringTask
在使用SpringTask的时候需要我们使用cron表达式
cron表达式
我们可以直接使用现有的cron生成器来写出cron表达式
在要执行的方法上面写如下注解
@Scheduled(cron = "")
cron后面的引号里面写上 cron表达式
下面就是一个代码就是实现每隔5秒触发一次
package com.sky.task;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
*
* 自定义定时任务
*/
@Component
@Slf4j
public class MyTask {
/**
* 定时任务 每隔5秒触发一次
*
*/
@Scheduled(cron = "0/5 * * * * ?")
public void executeTask() {
log.info("定时任务开始执行{}",new Date());
}
}
效果图