SpringBoot定時任務

開啓定時任務

創建一個定時任務配置類,加上@EnableScheduling註解,也可以直接加在啓動類上。

@EnableScheduling
@Configuration
public class ScheduledConfig {
}

創建自定義任務

下面兩個任務,都只打印當前時間,啓動程序測試即可

@Component
public class PrintTimeJob {

    // cron表達式
    @Scheduled(cron = "0/10 * * * * ?")
    public void print() {
        System.out.println("===== ===== ===== print ===== ===== =====>");
        System.out.println("Now Time: " + LocalDateTime.now());
    }

    // initialDelay初始延遲, fixedRate固定頻率(毫秒)
    @Scheduled(initialDelay = 5000, fixedRate = 10000)
    public void print2() {
        System.out.println("===== ===== ===== print2 ===== ===== =====>");
        System.out.println("Now Time: " + LocalDateTime.now());
    }
}

外部配置時間間隔

定時任務cron表達式,或者執行頻率通過外部配置時,可以如下:

@Component
public class JobController implements SchedulingConfigurer {

    @Value("${job.print.cron}")
    private String cron;

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.addCronTask(
                () -> print()
                , cron
        );
    }

    private void print() {
        System.out.println("[JobController] start job!");
    }
}

ScheduledTaskRegistrar中add*()多個方法可以滿足不同需求,這裏使用cron,yml配置如下:

# 定時任務配置
job:
  print:
    cron: 0/15 * * * * ?

如果是SpringCloud微服務管理,還可以將定時器配置放入配置中心ConfigServer中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章