記一次SpringBoot啓動成功後的執行業務線程操作

因爲業務需要,部分功能要求在程序啓動後就去執行,SpringBoot提供了專門的接口CommandLineRunner去實現此操作。

實現方式如下面代碼片段:

import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Component
@Order(value = 1)
public class MyTestThread implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        // 執行具體業務功能
    }
}

要求使用時必須要加 @Component 註解。

在有多個可被執行的業務時,通過使用 @Order 註解,設置各個線程的啓動順序(value值由小到大表示啓動順序)。

多個實現CommandLineRunner接口的類必須要設置啓動順序,不讓程序啓動會報錯!

設置啓動順序,表示一個功能的線程執行完後纔去執行下一個功能的線程,如果在前一個功能中有死循環操作,例如消費Kafka,

  while (true)
        {
            ConsumerRecords<String, String> records =     consumer.poll(Duration.ofMillis(100));
        // ...
        // ...
        // ...
         
        }

此操作會使該線程一直處於啓動狀態,導致後面的線程無法啓動。

希望大家可以根據實際情況,選擇合適的使用方法。

 

 

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