新建项目
一,定时任务
使用的情况:
每周末凌晨备份数据
触发条件 5 分钟后发送邮件通知
30 分钟未支付取消订单
每 1 小时去拉取数据
Scheduled创建定时任务
在SpringBoot的启动类类中加⼊ @EnableScheduling 注解,启⽤定时任务的配置
二,创建定时任务实现类
在pom.xml中添加
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
package com.hmf.code; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.time.LocalDateTime; @Component @Slf4j public class Task { @Scheduled(fixedRate = 2000) public void test(){ log.warn("现在时间:" + LocalDateTime.now()); } }
测试成功
注:没有一秒钟出现一次的话就是少了一个东西
在测试类添加while
package com.hmf.code;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Quartz01ApplicationTests {
@Test
void contextLoads() {
while (true) {
}
}
}
三,Scheduled参数
@Scheduled(fixedRate=5000):上⼀次开始执⾏时间点之后5秒再执⾏ @Scheduled(fixedDelay=5000):上⼀次执⾏完毕时间点之后5秒再执⾏ @Scheduled(initialDelay=1000, fixedRate=5000):第⼀次延迟1秒后执⾏,之后按fixedRate的规则 每5秒执⾏⼀次
@Scheduled(cron="*/5 * * * * *"):通过cron表达式定义规则
四,cron表达式
cron表达式是一个字符串,以5或者6个空格隔开(示例中是被5个空格隔开),字符串被切割为6个或者7个域, 每个域都代表不同的含义