一、定时任务的配置方式
1、xml配置文件
在spring.xml文件中开启注解扫描与定时任务扫描
<context:component-scan base-package="com.gy.mytask"/>
<task:annotation-driven>
在需要定时调用的任务类上面添加注解
@Component
在调用的定时任务方法上添加注解
@Scheduled()
完整截图:
@PropertySource(value = {"classpath:config.properties"})
@EnableScheduling
@Component
@Lazy(false)
public class HandleTask {
@Scheduled(cron="${report.userInfo}")
public void testSchdule() {
System.out.println("注解形式定时任务执行中");
}
}
括号中有
initialDelay=1000, fixedRate=5000 fixedDelay=5000
cron="*/5 * * * * MON-FRI"
这三种写法 分别表示 初始化时间 定时任务调用周期 和定时任务调用时间规律
1.initialDelay :初次执行任务之前需要等待的时间
@Scheduled(initialDelay =5000) public void doSomething() { }
2.fixedDelay:每次执行任务之后间隔多久再次执行该任务。
@Scheduled(fixedDelay=5000) public void doSomething() { // something that should execute periodically }
3.fixedRate:执行频率,每隔多少时间就启动任务,不管该任务是否启动完成
@Scheduled(fixedRate=5000) public void doSomething() { }
4.cron=“”设置时分秒等具体的定时 例子如下。
定时任务调用的时间方法按照如下规律:
- 1.秒(0–59)
- 2.分钟(0–59)
- 3.小时(0–23)
- 4.月份中的日期(1–31)
- 5.月份(1–12或JAN–DEC)
- 6.星期中的日期(1–7或SUN–SAT)
- 7.年份(1970–2099)
- 秒 0-59 , - * /
- 分 0-59 , - * /
- 小时 0-23 , - * /
- 日期 1-31 , - * ? / L W C
- 月份 1-12 或者 JAN-DEC , - * /
- 星期 1-7 或者 SUN-SAT , - * ? / L C #
- 年(可选)留空, 1970-2099 , - * /
- 表达式意义
- "0 0 12 * * ?" 每天中午12点触发
- "0 15 10 ? * *" 每天上午10:15触发
- "0 15 10 * * ?" 每天上午10:15触发
- "0 15 10 * * ? *" 每天上午10:15触发
- "0 15 10 * * ? 2005" 2005年的每天上午10:15触发
- "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
- "0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
- "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
- "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
- "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
- "0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
- "0 15 10 15 * ?" 每月15日上午10:15触发
- "0 15 10 L * ?" 每月最后一日的上午10:15触发
- "0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
- "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
- "0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
- 每天早上6点
- 0 6 * * *
- 每两个小时
- 0 */2 * * *
- 晚上11点到早上7点之间每两个小时,早上八点
- 0 23-7/2,8 * * *
- 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
- 0 11 4 * 1-3
- 1月1日早上4点
- 0 4 1 1 *