**cron表达式在线生成器:**https://www.bejson.com/othertools/cron/
**阿里云开发者社区手册:**https://developer.aliyun.com/article/942392
创建SpringBoot项目,在启动项上加上@EnableScheduling
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class SpringtaskApplication {
public static void main(String[] args) {
SpringApplication.run(SpringtaskApplication.class, args);
}
}
创建包task
,在下面新建DemoTask
需要在上面加上@Component
被Spring管理;在需要的方法上加上@Scheduled(cron = "0/2 * * * * ?")
cron
是表达式
@Component
public class DemoTask {
@Scheduled(cron = "0/2 * * * * ?")
public void task() {
System.out.println("Hello World");
}
}
之后运行项目会发现每个两秒打印一次
定时任务触发时间的一个字符串表达形式,分为6或7个域,每一个域代表一个含义。
cron的结构从左到右(用空格隔开):秒 分 小时 月份中的日期 月份 星期中的日期 年份
这些字段的取值范围如下所示:
字段 | 允许的值 | 允许的特殊字符 |
---|---|---|
秒(Seconds) | 0-59 | , - * / |
分(Minutes) | 0-59 | , - * / |
时(Hours) | 0-23 | , - * / |
日(DayofMonth) | 1-31 | , - * ? / L W |
月(Month) | 1-12 or JAN-DEC | , - * / |
周(DayofWeek) | 0-6 or SUN-SAT (0表示星期天) | , - * ? / L # |
年(Year) | 留空或1970-2099 | , - * / |
|
| 年(Year) | 留空或1970-2099 | , - * / |
注:如日和月同时维护,例如:3 50 18 15 2 4,需要注意二月的星期四,不一定是15号,此时星期和日是有冲突的,通常需要舍掉一个,被舍掉的参数用**?**占位Cron表达式的时间字段除允许设置数值外,还可使用一些特殊的字符,提供列表、范围、通配符等功能。