介绍
Spring Task是Spring框架提供的任务调度工具,可以按照我们约定的时间自动执行某个代码逻辑。
使用Spring Task只需要导入Spring的基础包(spring-context),不需要额外的包,而且支持注解和配置文件两种形式
应用场景
- 信用卡每月定时提醒还款
- 银行贷款每月定时提醒还款
- 火车票售票系统定时处理未支付订单
- 支付系统定时清算对账
cron表达式
通过cron表达式可以定义任务触发的时间
cron表达式其实就是一个字符串,分为6或7个域,由空格分隔开,每个域代表一个含义
cron表达式中每个域的含义分别为:秒、分钟、小时、日、月、周、年
2022年10月12日上午9点整对应的cron表达式为:0 0 9 12 10 ? 2022
快速入门
一、导入坐标(spring基础包有这个)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.4.RELEASE</version>
</dependency>
二、启动类添加注解 @EnableScheduling 开启任务调度
@SpringBootApplication
@EnableTransactionManagement //开启注解方式的事务管理
@Slf4j
@EnableCaching//开启注解式缓存功能
@EnableScheduling//开启定时任务
public class ReggieApplication {
public static void main(String[] args) {
SpringApplication.run(ReggieApplication.class, args);
log.info("server started");
}
}
三、自定义定时任务类
/**
* 定时任务 */
* @Component
* @Slf4j
* public class SpringTaskDemo {
* /**
* * 定时处理方法,每5秒钟执行一次
* */
* @Scheduled(cron = "0/5 * * * * ?")
* public void doSomething(){
* log.info("业务处理,触发时间:{}",
* DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()));
* }
* }