Spring Task
Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某段代码
cron表达式
cron表达式其实就是一个字符串,通过cron表达式可以定义任务触发时间
构成规则:分为6或者7个域,由空格分隔开,每个域代表一个含义
分别为:秒、分钟、时间、日、月、周、年(可选)
*符号代表所有可能的值。例如,在分钟字段中,*代表每一分钟?符号代表不确定的值,一般用在日或者星期字段。在这两个字段中必须至少有一个使用?,来表示不指定值。例如,如果在日字段中使用?,则表示每月的哪一天执行任务都可以,具体的日期不确定/符号代表"每",比如在秒字段中,5/15表示从第5秒开始,每15秒执行一次,符号代表"和",用于列出两个或更多的值,例如在小时字段中,3,5表示第3小时和第5小时-符号代表"范围",在小时字段中写5-7,那就意味着在第5, 6, 7小时执行任务

在线生成器:https://cron.qqe2.com/
代码示例
启动类上添加@EnableScheduling开启定时任务,将任务类注册为Bean,使用@Scheduled注解的方法开启定时任务
MyTask.java
java
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
import java.util.Date;
@Component
@Slf4j
public class MyTask {
// 不需要Lombok库或其他注解处理器的支持
// private static final Logger logger = LoggerFactory.getLogger(CacheMapConfig.class);
// 从"任意"第1秒开始,每5秒执行一次任务,无论分钟、小时、日期、月份和星期几
// "5 * * * * ?"代表每分钟的第五秒执行一次
@Scheduled(cron = "1/5 * * * * ?")
public void executeTask() {
log.info("定时任务开始执行:{}", new Date());
}
}
