springboot啓動時執行任務CommandLineRunner,項目啓動後執行

SpringBoot中CommandLineRunner的作用
> 平常開發中有可能需要實現在項目啓動後執行的功能,SpringBoot提供的一種簡單的實現方案就是添加一個model並實現CommandLineRunner接口,實現功能的代碼放在實現的run方法中
# 簡單例子

package org.springboot.sample.runner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class MyStartupRunner implements CommandLineRunner {

@Override
public void run(String... args) throws Exception {
System.out.println(">>>>>>>>>>>>>>>服務啓動執行,執行加載數據等操作<<<<<<<<<<<<<");
}

}


# 如果有多個類實現CommandLineRunner接口,如何保證順序
> SpringBoot在項目啓動後會遍歷所有實現CommandLineRunner的實體類並執行run方法,如果需要按照一定的順序去執行,那麼就需要在實體類上使用一個@Order註解(或者實現Order接口)來表明順序

package org.springboot.sample.runner;

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


@Component
@Order(value=2)
public class MyStartupRunner1 implements CommandLineRunner {

@Override
public void run(String... args) throws Exception {
System.out.println(">>>>>>>>>>>>>>>服務啓動執行 2222 <<<<<<<<<<<<<");
}

}


//第二個
package org.springboot.sample.runner;

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

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

@Override
public void run(String... args) throws Exception {
System.out.println(">>>>>>>>>>>>>>>服務啓動執行 111111 <<<<<<<<<<<<<");
}

}


> 控制檯顯示
```
>>>>>>>>>>>>>>>服務啓動執行 11111111 <<<<<<<<<<<<<
>>>>>>>>>>>>>>>服務啓動執行 22222222## 標題 ## <<<<<<<<<<<<<
```
> 根據控制檯結果可判斷,@Order 註解的執行優先級是按value值從小到大順序。

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