Contents

Spring Boot TaskScheduler 簡單實作起手勢

最近看到 Spring Boot TaskScheduler 簡單的範例
就簡單實作
沒想到這麼簡單

簡單實作

  1. @EnableScheduling
    在 @SpringBootApplication 下面配置 @EnableScheduling

  2. 配置 Task 類別

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Component
public class ScheduledTask {

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private Integer count0 = 1;
    private Integer count1 = 1;
    private Integer count2 = 1;

    @Scheduled(fixedRate = 5000)
    public void reportCurrentTime() throws InterruptedException {
        System.out.println(String.format("---第%s次執行,當前時間為:%s", count0++, dateFormat.format(new Date())));
    }

    @Scheduled(fixedDelay = 5000)
    public void reportCurrentTimeAfterSleep() throws InterruptedException {
        System.out.println(String.format("===第%s次執行,當前時間為:%s", count1++, dateFormat.format(new Date())));
    }

    @Scheduled(cron = "0 0 1 * * *")
    public void reportCurrentTimeCron() throws InterruptedException {
        System.out.println(String.format("+++第%s次執行,當前時間為:%s", count2++, dateFormat.format(new Date())));
    }

}

參考: 基於Spring Boot 實現定時任務-springboot,java,spring 相關文章-天碼營

這邊有趣的是 cron 這邊有到秒
然後這邊程式是用單線程
所以前一個超過時間就不會執行(我看到文章是這樣寫)
這邊就不敘述,因為我也不是很懂

相關文章

Spring Batch 跟 Spring Boot Task 是不一樣東西…

問題

我在想程是執行中那要怎麼關閉程式呢?
我想改一個方法就要把所有程式關掉
這樣執行中程式不是就會有問題

不過,也有可能 Spring Boot Task 應該只要放一個任務工作程式就沒這個問題?
但實務上是不是這樣做就不知道了