Spring Boot种设置定时任务

在 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

参考链接:

  • https://blog.csdn.net/jinyangbest/article/details/79304343
  • https://blog.csdn.net/weixin_39800144/article/details/79270120

猜你喜欢

转载自www.cnblogs.com/zifeiy/p/9253114.html