在 http://start.spring.io/ 中新建一个Group为com.zifeiy
,Artifact为task
的工程。
然后在TaskApplication中添加注释:@EnableScheduling
,用以开启定时任务:
package com.zifeiy.task;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class TaskApplication {
public static void main(String[] args) {
SpringApplication.run(TaskApplication.class, args);
}
}
然后新建一个类用于部署定时任务:
package com.zifeiy.task.component;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class TaskComponent {
@Scheduled(cron="0 * * * * *")
public void schedule1() {
System.out.println("schedule 1: " + new Date());
}
@Scheduled(fixedRate = 5000)
public void schedule2() {
System.out.println("schedule 2: " + new Date());
}
@Scheduled(fixedDelay = 5000)
public void schedule3() {
System.out.println("schedule 3: " + new Date());
}
@Scheduled(initialDelay=1000, fixedRate=5000)
public void schedule4() {
System.out.println("schedule 4: " + new Date());
}
}
- @Scheduled(fixedRate = 5000) :上一次开始执行时间点之后5秒再执行
- @Scheduled(fixedDelay = 5000) :上一次执行完毕时间点之后5秒再执行
- @Scheduled(initialDelay=1000, fixedRate=5000) :第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
- @Scheduled(cron="0 * * * * *") :通过cron表达式定义规则
注意,这里的时间,单位是毫秒,1秒=1000毫秒
cron属性
- 第一位,表示秒,取值0-59
- 第二位,表示分,取值0-59
- 第三位,表示小时,取值0-23
- 第四位,日期天/日,取值1-31
- 第五位,日期月份,取值1-12
- 第六位,星期,取值1-7,星期一,星期二...,注:不是第1周,第二周的意思 另外:1表示星期天,2表示星期一。
- 第7为,年份,可以留空,取值1970-2099
参考链接: