定时任务
在开发中,我们经常会用到定时任务的功能,例如定时同步数据,定时发送邮件等等,Spring Boot也提供了定时任务的功能
基本使用
要使用定时任务,首先需要开启项目的定时任务功能,只需要在启动类或者配置类中添加@EnableScheduling
注解
@EnableScheduling
@SpringBootApplication
public class SpringDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringDemoApplication.class, args);
}
}
创建一个定时任务类,使用@Component
注解添加到Spring容器中,然后在组件中创建定时执行方法,在方法上标注@Scheduled
注解,使用cron表达式指定定时任务执行的时间,例如以下示例在每分钟的第0秒执行一次
@Slf4j
@Component
public class MyTask {
@Scheduled(cron = "0 * * * * ?")
public void printTask() {
log.info("触发定时任务");
}
}
启动项目,定时任务在每分钟都会执行一次
corn表达式
@Scheduled
注解使用corn表达式来表示定时任务执行的时间,要让定时任务在期望的时候执行,首先需要清楚corn表达式的表示方法
corn表达式由7位组成,分别表示秒/分/时/日/月/星期/年,但是@Scheduled
注解中的corn表达式之支持前6位
corn表达式支持通配符,常用的通配符如下:
- *:在每个位上来表示所有值,例如*** * * * * ?**表示每一秒都执行
- ?:在日期位上或者星期位上来表示不设置,在设置了日期后,星期就可以使用
?
来表示,反之亦然 - -:表示范围,例如0 5-20 * * * ?,表示从第5分钟到20分钟每分钟触发一次
- /:表示从指定起始时间开始,每隔固定时间触发一次,例如0 5/20 * * * ?,表示第5,25,45分钟分别触发一次
- ,:表示列出枚举值,例如0 5,20 * * * ?,表示在5分钟和20分钟各触发一次
关于corn表达式还有很多表示方式,具体可以查询网上相关资料,或者使用一些在线corn表达式翻译工具
关于corn表达式还有很多表示方式,具体可以查询网上相关资料,或者使用一些在线corn表达式翻译工具