Spring3.0以后自主开发的定时任务工具
cron表达式
Seconds | ,- * / 0-59 |
Minutes | ,- * / 0-59 |
Hours | ,- * / 0-23 |
DayofMonth | , - * / ? L W C 0-31 |
Month | ,- * / 1-12 |
DayofWeek | , - * / ? L C # 1-7 1表示星期天,2表示星期一 |
Year | - * / 1970-2099 |
注意两个特殊的域DayofMonth DayofWeek 两者必须有一个不指定数值 即 ?,因为两者会产生冲突
假如在Minutes域使用*, 即表示每分钟都会触发事件
例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次
例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次
在Minutes域使用5,20,则意味着在5和20分每分钟触发一次
如果在DayofWeek域使用5L,意味着在最后的一个星期四触发
例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?
在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一 到星期五中的一天,则就在5日触发
#用于确定每个月第几个星期几,例如在4#2,表示某月的第二个星期三
xml配置
<task:scheduled-tasks>
<task:scheduled ref="taskJob" method="job1" cron="0 * * * * ?"/>
</task:scheduled-tasks>
<context:component-scan base-package=" com.gy.mytask " />
@Service
public class TaskJob {
public void job1() {
System.out.println(“任务进行中。。。”);
}
}
@Scheduled
@Component(“taskJob”)
public class TaskJob {
@Scheduled(cron = "0 0 3 * * ?")
public void job1() {
System.out.println(“任务进行中。。。”);
}
}
<task:annotation-driven scheduler="qbScheduler" mode="proxy"/>
<task:scheduler id="poolTaskScheduler" pool-size="10"/>
springboot
启动类里面使用@EnableScheduling
@Scheduled(fixedDelay = 5000)
@Scheduled(fixedRate = 3000)
@Scheduled(cron = "0 0,30 0,8 ? * ? ")