个人管理后台制作(10)-定时任务
种类
- 简单的定时任务可以直接通过 Spring 的 @Scheduled 注解实现
- 复杂的定时任务则可以通过集成 Quartz 来实现
@Scheduled
- 在项目启动类上添加 @EnableScheduling 注解开启定时任务
@SpringBootApplication
@EnableScheduling
public class PmsApplication {
public static void main(String[] args) {
SpringApplication.run(PmsApplication.class, args);
}
}
- 创建静态的定时任务类
@Component
public class StaticTaskJob {
}
- 定时任务通过 @Scheduled 注解进行配置
@Scheduled(fixedDelay = 1000)
public void fixedDelay() {
System.out.println("fixedDelay:"+ LocalDateTime.now());
}
@Scheduled(initialDelay = 1000, fixedRate = 2000)
public void initialDelay() {
System.out.println("initialDelay:" + LocalDateTime.now());
}
@Scheduled(cron = "0 * * * * ?")
public void cron() {
System.out.println("cron:" +LocalDateTime.now());
}
- Cron简单介绍
- 一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。
- {秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}
- 按顺序依次为:
1.秒(0~59)
2.分钟(0~59)
3.小时(0~23)
4.天(月)(0~31,但是你需要考虑你月的天数)
5.月(0~11)
6.天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
7.年份(1970-2099) - 特殊字符的介绍
- “*”字符代表所有可能的值
- “/”字符用来指定数值的增量
- “?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值
- “L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写
- 举例
- “30 * * * * ?” 每半分钟触发任务
- “30 10 * * * ?” 每小时的10分30秒触发任务